Tsu指的是时钟上升沿到来之前数据保持稳定的时间,接下来是Tco,Tco期间寄存器在干嘛?
Tco从进程上分成两部分,前半部分对输入数据进行稳定,经过前半部分的数据稳定期后,后半部分根据前半部分稳定出的数据进行判断,根据条件产生逻辑对应的结果。
比如以下代码:
module t0531(
input clk,
input rst_n,
input tx_go,
output reg[7:0]cnt,
output reg en_tx
);
always@(posedge clk or negedge rst_n)
if(~rst_n)
en_tx<=1'b0;
else if(tx_go)
en_tx<=1'b1;
else if(cnt>=5)
en_tx<=0;
always@(posedge clk or negedge rst_n)
if(~rst_n)
cnt<=2'd0;
else if(en_tx)
begin
cnt<=cnt+1'b1;
end
endmodule
cnt=5时,要对en_tx置零,en_tx=1时,cnt要加1。
那么,cnt==5时,cnt是否还要加一?
要的!以上就是Tco的作用,在Tco的前半阶段,对当前的数据进行稳定,稳定的结果为:
cnt=5,en_tx=1.
在后半部分,对于
else if(cnt>=5)
en_tx<=0;
将en_tx=0.
对于:
cnt<=cnt+1'b1;
将cnt<=5+1=6