谁能帮我解释这个cpld 程序问题?

[复制链接]
3197|3
 楼主| teuton 发表于 2007-7-26 13:32 | 显示全部楼层 |阅读模式
我用的是ALTERA&nbsp;EPM570;为了测试做的电路板ok否,我写了一小段程序验证我的电路板。<br />module&nbsp;buttom1&nbsp;(clk,epm240_clk,rst570,test_out,port_test);<br />input&nbsp;clk;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//main&nbsp;system&nbsp;clock//<br />input&nbsp;rst570;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//reset&nbsp;epm570&nbsp;reset//<br />output&nbsp;epm240_clk;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//epm240&nbsp;system&nbsp;clock//<br />output&nbsp;test_out;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//epm570&nbsp;system&nbsp;test//<br />output&nbsp;[3:0]port_test;&nbsp;&nbsp;&nbsp;&nbsp;//主要问题所在<br /><br /><br />//assign&nbsp;epm240_clk&nbsp;=clk;<br />assign&nbsp;&nbsp;port_test&nbsp;=&nbsp;4'b1010;//主要问题所在<br />reg&nbsp;&nbsp;&nbsp;test_out;<br />reg&nbsp;&nbsp;&nbsp;epm240_clk;<br /><br />always&nbsp;@(&nbsp;rst570&nbsp;or&nbsp;&nbsp;clk)<br />begin<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(rst570==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;test_out&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;epm240_clk=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;test_out&nbsp;=&nbsp;clk;<br />&nbsp;&nbsp;&nbsp;&nbsp;epm240_clk=clk;<br />&nbsp;&nbsp;&nbsp;&nbsp;end<br />end<br /><br /><br />endmodule<br /><br />在我标识//主要问题所在&nbsp;的那两行程序没写以前,我的test_out&nbsp;=&nbsp;clk;这条语句在下载后是不执行的,我换了引脚,还是没有输出,我检查电源地,也是没有问题的,当我把//主要问题所在&nbsp;两行语句写下,烧入后,test_out&nbsp;=&nbsp;clk这条语句竟然执行了。是什么原因呢。难道是test_out&nbsp;=&nbsp;clk;被综合掉了,为什么呢?
 楼主| teuton 发表于 2007-7-26 13:34 | 显示全部楼层

自己定一下

  
sibaidong 发表于 2007-7-27 19:57 | 显示全部楼层

要是VHDL还可以帮你一下!

Verilog&nbsp;正在学习中,帮不了哦,顶一下!
aureoleday 发表于 2007-8-2 23:18 | 显示全部楼层

楼主,你的代码实在太NB

强烈建议你看看verilog语法的书,找个模板比着写,要不bug多到死<br /><br />先说几个最明显的问题<br />1.&nbsp;always块内部一般都用非阻塞赋值,也就是“&lt=”,而不是“=”;<br />2.&nbsp;always后的敏感列表一般在时钟和复位信号上升沿或下降沿采样,而不是都采样,DDR在CPLD里不怎么好用,哈<br />如always@(posedge&nbsp;clk&nbsp;or&nbsp;negedge&nbsp;_rst)...<br />3.&nbsp;第一个赋值语句一般应在最后一个变量定义之后<br />4.&nbsp;你的port_test&nbsp;应该先定义为wire&nbsp;变量后才能进行赋值<br /><br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

70

帖子

0

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