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