打印
[Actel FPGA]

急问一个关于ARM读取FPGA中数据的问题

[复制链接]
2148|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1dqmoon|  楼主 | 2008-12-10 08:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
老板不想让别人抄板,就让我用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;


这种情况大概会是哪种问题啊,  产品急着出货, 我这部分如果还不解决,老板就打算炒掉我了, 现在都在裁员,被炒就完蛋了。。。请各位帮帮忙啊!!

因为是一些保密性质的东西,代码不方便发出, 请见谅

相关帖子

沙发
1dqmoon|  楼主 | 2008-12-12 11:42 | 只看该作者

谢谢,问题已经解决了

使用特权

评论回复
板凳
zoupeng139| | 2008-12-13 15:07 | 只看该作者

RST='0'

还是这样啊?RST=='0'
呵呵
难道和C51不一样么?

使用特权

评论回复
地板
linux123| | 2009-2-25 13:36 | 只看该作者

压力好大啊

使用特权

评论回复
5
linux123| | 2009-2-25 13:36 | 只看该作者

问题解决了没有啊?楼主?

使用特权

评论回复
6
arm-123| | 2009-2-25 13:48 | 只看该作者

好像已经解决了

使用特权

评论回复
7
小cat| | 2009-3-2 09:40 | 只看该作者

看看你的问题

使用特权

评论回复
8
蹦蹦车| | 2009-3-2 13:36 | 只看该作者

这就是FPGA语言?

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;

使用特权

评论回复
9
小cat| | 2009-3-7 13:31 | 只看该作者

解决了就好阿

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

253

帖子

0

粉丝