老板不想让别人抄板,就让我用FPGA做个存数据的东西,接到ARM的总线上,ARM向FPGA发送指令, FPGA得到指令后根据指令的内容返回具体的数据,由ARM读取。
ARM的CS线、WR线、RD线和一根地址线A0连到了FPGA上,当地址线为0时, ARM向FPGA发送指令, 当地址线为1时, FPGA将数据放到总线上, 由ARM读取。FPGA与ARM的接口是8位的, FPGA的这8根线是双向口, 其他先为输入口。
FPGA中的数据是根据产品种类来的, 产品目前只有两款, FPGA中保存的数据非常少。FPGA中数据格式为 00,xx,yy; 即第一字节恒为0,没有什么用处, 后面两个字节是产品编号。 FPGA 用的是ACTEL的A3P015。
现在的情况上, ARM指令已经发过去了, 但FPGA不能返回数据, 用逻辑分析仪抓过数据, 数据上可以很明显的看到, 指令数据在总线出现, 指令过后有RD信号,但总线上数据全是00。
我是用状态机实现的这个数据输出部分,FPGA检测到RD下降沿信号后判断CS,A0的状态, CS=0,A0=1时把固定的数据送到双向口上。 从逻辑分析仪抓到的数据来看, 好象是这个状态机没有工作。 类似的代码如下: process(RST, CS, A0, RD) begin if(RST='0') then RD_STATE<=s0; elsif(CS='0' AND A0='1' AND RD'event AND RD='0') then case RD_STATE is when s0=> DataBus<="00000000"; RD_STATE<=s1; when s1=> DataBus<="xxxxxxxx"; -- 这个是个固定的数据 RD_STATE<=s2; when s2=> DataBux<="yyyyyyyy"; -- 这个也是个固定的数据 RD_STATE<=s0; end case; end if; end process;
这种情况大概会是哪种问题啊, 产品急着出货, 我这部分如果还不解决,老板就打算炒掉我了, 现在都在裁员,被炒就完蛋了。。。请各位帮帮忙啊!!
因为是一些保密性质的东西,代码不方便发出, 请见谅 |