新人自学FPGA
moduleCNT4B(CLK,RST,ENA,CLK_1,RST_1,ENA_1,OUTY,COUT);//端口声明
input CLK,RST,ENA;
output CLK_1,RST_1,ENA_1;
output[3:0] OUTY;
output COUT;
reg[3:0] OUTY;
reg COUT;//寄存器变量OUTY,位宽为1
wire CLK_1;
wire RST_1;
wire ENA_1;
assign CLK_1 = CLK;
assign RST_1 = RST;
assign ENA_1 = ENA;
always@(posedge CLKor negedge RST) /*当CLK上升沿或者RST上升沿时,触发always模块执行*/
begin
if(!RST)
begin
OUTY<=4'b0000;
COUT<=1'b0;/*当复位信号等于0时,计数OUTY、COUT置0*/
end
else
if(ENA)/*当使能信号为1时,计数器计数工作*/
begin
OUTY<=OUTY+1;
COUT<=OUTY[0] & OUTY[1] &OUTY[2] & OUTY[3]; /*计数显示*/
end
end
endmodule
红色部分是不明白的地方,<=是赋值的意思么?用等号可以么?还有COUT<=OUTY[0] & OUTY[1] & OUTY[2] & OUTY[3]这一句,用&号连接不是逻辑与么...
买了自学课本的,没在手边,新人小白求问,先谢谢各位!
新人求助!
帮你顶~
OUTY<=OUTY+1;是赋值的意思,将OUTY加1,就和C语言 OUTY=OUTY+1 是一样的
COUT<=OUTY[0] & OUTY[1] & OUTY[2] & OUTY[3] 这句话的意识是 当OUTY累加到 (二进制) 1111b 是,COUT的值就是1,其余COUT的值为0,四位二进制加法器,加满溢出,COUT就是溢出标志
OUTY加到1111b时, OUTY=1&1&1&1=1;只有这一种情况OUTY的值是1,&符号意思是逻辑与
我手头有FPGA开发板的学习资料可以分享给你
"<="是非阻塞赋值方式,“=”是阻塞赋值方式,“<=”赋值语句要等到整个块结束之后在进行赋值,“=”则是在该条语句执行完就赋值。
首先说<=的问题,是赋值符号,称之为非阻塞赋值,这种赋值是在alway 块内语句都执行完后才赋值,=是阻塞赋值,即执行该条语句就赋值,这里是时序逻辑,所以要用<=。第二个问题,四个值之间是与的关系,即都为1 cout为1,即outy一共计数了四个值,cout为进位
这个自学有难度。
1.<=是非阻塞赋值,在always块完成后才赋值;
=是阻塞赋值,赋值完成后才进入下一句;
一般时序逻辑用<=,组合逻辑用=
2.&按位与,在此处应该是检测OUTY是否溢出
因为是时序逻辑,所以用<=
区别