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

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

谢谢,问题已经解决了

  
zoupeng139 发表于 2008-12-13 15:07 | 显示全部楼层

RST='0'

还是这样啊?RST=='0'<br />呵呵<br />难道和C51不一样么?
linux123 发表于 2009-2-25 13:36 | 显示全部楼层

压力好大啊

  
linux123 发表于 2009-2-25 13:36 | 显示全部楼层

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

  
arm-123 发表于 2009-2-25 13:48 | 显示全部楼层

好像已经解决了

  
小cat 发表于 2009-3-2 09:40 | 显示全部楼层

看看你的问题

  
蹦蹦车 发表于 2009-3-2 13:36 | 显示全部楼层

这就是FPGA语言?

process(RST,&nbsp;CS,&nbsp;A0,&nbsp;RD)<br />begin<br />&nbsp;&nbsp;if(RST='0')&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RD_STATE&lt=s0;<br />&nbsp;&nbsp;elsif(CS='0'&nbsp;AND&nbsp;A0='1'&nbsp;AND&nbsp;RD'event&nbsp;AND&nbsp;RD='0')&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;RD_STATE&nbsp;is<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;s0=&gt&nbsp;&nbsp;DataBus&lt=&quot;00000000&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RD_STATE&lt=s1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;s1=&gt&nbsp;DataBus&lt=&quot;xxxxxxxx&quot;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;这个是个固定的数据<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RD_STATE&lt=s2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;s2=&gt&nbsp;DataBux&lt=&quot;yyyyyyyy&quot;;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;这个也是个固定的数据<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RD_STATE&lt=s0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;case;&nbsp;<br />&nbsp;&nbsp;&nbsp;end&nbsp;if;<br />end&nbsp;process;<br />
小cat 发表于 2009-3-7 13:31 | 显示全部楼层

解决了就好阿

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

253

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部