14.7-时序反馈移位寄存器建模

阻塞和非阻塞赋值语句的区别: 1,阻塞赋值,顺序执行; 2,非阻塞赋值,并行执行。

原则1,:时序电路建模时,用非阻塞赋值;
原则2:锁存器电路建模时,用非阻塞赋值。

前述:
在描述时序逻辑时,必须养成使用非阻塞赋值的习惯(无论用多个always块或单个always块来描述时)。
如果使用阻塞赋值语句,在较为复杂的多个always块中设计项目,稍不注意就可能会出现竞争冒险,或者功能错误,使设计的电路出现问题。

1,阻塞赋值实现的LFSR,实际上并不具有LFSR功能

线性反馈移位寄存器(LFSR),是带反馈回路的时序逻辑。
反馈回路给习惯于顺序阻塞赋值描述时序逻辑的设计人员带来了麻烦。

1.1.1,RTL设计,阻塞赋值
//
module		lfsrb1(q3, clk, pre_n);
output		q3;
input		clk, pre_n;
reg			q1, q2, q3;
wire		n1;

assign		n1 = q1 ^ q3;

always@(posedge clk or negedge pre_n)
	if(!pre_n)		begin
		q3	= 1'b1;
		q2	= 1'b1;
		q1	= 1'b1;
		end
	else	begin
		q3	= q2;
		q2	= n1;
		q1	= q3;
		end
		
endmodule

除非使用中间暂存变量,否则上例所示的赋值是不可能实现反馈逻辑的。

1.1.2,tb测试代码
module	test_lfsrb1;
reg		clk, pre_n;
wire	q3;


lfsrb1	u1_lfsrb1(
.q3			(q3		),
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值