31--阻塞与非阻塞赋值移位寄存器的几种仿真

本文详细介绍了一种使用Verilog HDL语言设计的移位寄存器电路,包括四种不同的移位寄存器模块:block1、block2、block3和block4。每个模块通过不同的信号赋值顺序实现移位操作,展示了Verilog HDL在数字电路设计中的灵活性和强大功能。
摘要由CSDN通过智能技术生成
`timescale 1ns/1ns 
 module tb_block(); 
 wire Q0,Q1,Q2,Q3; 
 reg clk,din; 

 block1 u1(.clk(clk),.din(din),.Q0(Q0),.Q1(Q1),.Q2(Q2),.Q3(Q3));

initial begin
clk<=1'b0;
din<=1'b0;
#50 din<=1'b1;
end
always #5 clk<=~clk;
endmodule


 module block1(Q0,Q1,Q2,Q3,din,clk); 

 output Q0,Q1,Q2,Q3; 

 input clk,din; 


     reg Q0,Q1,Q2,Q3; 

     always @(posedge clk) 

           begin 

           Q3=Q2;                //注意赋值语句的顺序 

           Q2=Q1; 

           Q1=Q0; 

           Q0=din; 

           end 

     endmodule 

在这里插入图片描述

     module block2(Q0,Q1,Q2,Q3,din,clk); 

     output Q0,Q1,Q2,Q3; 

     input clk,din; 

     reg Q0,Q1,Q2,Q3; 

     always @(posedge clk) 

           begin 

           Q3=Q2; 

           Q1=Q0;               

           Q2=Q1; 

           Q0=din; 

           end 

     endmodule 
     
`timescale 1ns/1ns 
 module tb_block(); 
 wire Q0,Q1,Q2,Q3; 
 reg clk,din; 

 block2 u1(.clk(clk),.din(din),.Q0(Q0),.Q1(Q1),.Q2(Q2),.Q3(Q3));

initial begin
clk<=1'b0;
din<=1'b0;
#50 din<=1'b1;
end
always #5 clk<=~clk;
endmodule

在这里插入图片描述

     module block3(Q0,Q1,Q2,Q3,din,clk); 

     output Q0,Q1,Q2,Q3; 

     input clk,din; 

     reg Q0,Q1,Q2,Q3; 

     always @(posedge clk) 

          begin 

          Q0=din;                //4条赋值语句的顺序与例 10.11完全颠倒 

          Q1=Q0; 

          Q2=Q1; 

          Q3=Q2; 

          end 

     endmodule 

`timescale 1ns/1ns 
 module tb_block(); 
 wire Q0,Q1,Q2,Q3; 
 reg clk,din; 

 block3 u1(.clk(clk),.din(din),.Q0(Q0),.Q1(Q1),.Q2(Q2),.Q3(Q3));

initial begin
clk<=1'b0;
din<=1'b0;
#50 din<=1'b1;
end
always #5 clk<=~clk;
endmodule

在这里插入图片描述

 module block4(Q0,Q1,Q2,Q3,din,clk); 
 

 output Q0,Q1,Q2,Q3; 

 input clk,din; 

 reg Q0,Q1,Q2,Q3; 

 always @(posedge clk) 

     begin 

      Q3<=Q2; 

      Q1<=Q0; 

      Q2<=Q1; 

      Q0<=din; 

      end 

endmodule 

`timescale 1ns/1ns 
 module tb_block(); 
 wire Q0,Q1,Q2,Q3; 
 reg clk,din; 

 block4 u1(.clk(clk),.din(din),.Q0(Q0),.Q1(Q1),.Q2(Q2),.Q3(Q3));

initial begin
clk<=1'b0;
din<=1'b0;
#50 din<=1'b1;
end
always #5 clk<=~clk;
endmodule

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值