[Actel FPGA] 新手关于Verilog HDL求助

[复制链接]
2386|2
 楼主| 水中鱼 发表于 2009-1-20 14:17 | 显示全部楼层 |阅读模式
我最近想学CPLD,听说Verilog&nbsp;HDL语言相对简单,可我编了如下的程序老有错误提示,以MAX+PLUS上编译不能通过,本程序的思想是设计一个32位的计数器,通过CS来选择将32位的数据按8位输出:<br />`timescale&nbsp;1ns/100ps<br />module&nbsp;vx(clk,rst,cs,dout);<br />input&nbsp;clk,rst;<br />input&nbsp;[1:0]&nbsp;cs;<br />output&nbsp;[7:0]&nbsp;dout;<br />reg&nbsp;[31:0]&nbsp;counter;<br /><br /><br />always&nbsp;@(posedge&nbsp;clk&nbsp;or&nbsp;posedge&nbsp;rst)<br />&nbsp;&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(rst)&nbsp;counter&lt=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;counter&lt=counter+1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;&nbsp;end<br /><br />/*assign&nbsp;dout=&nbsp;(cs==1)&nbsp;?&nbsp;counter[15:8]:counter[7:0];*/<br /><br />always&nbsp;@(cs)<br />&nbsp;&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case(cs)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;:&nbsp;dout[7:0]=counter[7:0];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;:&nbsp;dout[7:0]=counter[15:8];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;:&nbsp;dout[7:0]=counter[23:16];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;:&nbsp;dout[7:0]=counter[31:24];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endcase<br />&nbsp;&nbsp;end<br /><br />endmodule<br /><br /><br />另如果CS只有一位,而计数器只有16位的话通过此语句assign&nbsp;dout=&nbsp;(cs==1)&nbsp;?&nbsp;counter[15:8]:counter[7:0];可编译成功(16位计数器),我也是才学CPLD,不知道哪位大虾可指点指点,小弟感激不尽....
 楼主| 水中鱼 发表于 2009-1-21 01:24 | 显示全部楼层

唉,终于找到原因了,把DOUT配置成寄存器输出型就通过了,

唉,终于找到原因了,把DOUT配置成寄存器输出型就通过了,
徐若瑄 发表于 2009-3-12 09:00 | 显示全部楼层

哦!恭喜……

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

本版积分规则

3

主题

9

帖子

0

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