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