北邮22级信通院数电:Verilog-FPGA(10)第十周实验 实现移位寄存器74LS595(仿真方法验证)

北邮22信通一枚~

跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章

持续关注作者 迎接数电实验学习~

获取更多文章,请访问专栏:

北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客

使用FPGA开发板验证的教程,请参考

北邮22级信通院数电:Verilog-FPGA(10)第十周实验 实现移位寄存器74LS595-CSDN博客

本篇博客主要以modelsim仿真的方法验证74LS595移位寄存器的功能。

目录

一.代码部分

[1.1 shift_register.v](#1.1 shift_register.v)

[1.2 dtri.v](#1.2 dtri.v)

[1.3 dtri_n_g.v](#1.3 dtri_n_g.v)

[1.4 shift_register_tb.v](#1.4 shift_register_tb.v)

二.仿真验证结果


一.代码部分

1.1 shift_register.v

主程序。

复制代码
module shift_register
(
	input SCK,SI,SCLR,RCK,G,
	output wire QA,QB,QC,QD,QE,QF,QG,QH,QH_s
);
	
	wire RA,RB,RC,RD,RE,RF,RG,RH,RH_n;
	wire SA,SB,SC,SD,SE,SF,SG,SH;
	
	dtri Ra(.clk(SCK),.rst(SCLR),.d(SI),.q(RA));
	dtri Rb(.clk(SCK),.rst(SCLR),.d(RA),.q(RB));
	dtri Rc(.clk(SCK),.rst(SCLR),.d(RB),.q(RC));
	dtri Rd(.clk(SCK),.rst(SCLR),.d(RC),.q(RD));
	dtri Re(.clk(SCK),.rst(SCLR),.d(RD),.q(RE));
	dtri Rf(.clk(SCK),.rst(SCLR),.d(RE),.q(RF));
	dtri Rg(.clk(SCK),.rst(SCLR),.d(RF),.q(RG));
	dtri Rh(.clk(SCK),.rst(SCLR),.d(RG),.q(RH));
	
	assign RH_n = ~RH;
	assign QH_s = ~RH_n;
	
	
	dtri_n_g Qa(.clk(RCK),.d(RA),.g(G),.qb(SA),.qq(QA));
	dtri_n_g Qb(.clk(RCK),.d(RB),.g(G),.qb(SB),.qq(QB));
	dtri_n_g Qc(.clk(RCK),.d(RC),.g(G),.qb(SC),.qq(QC));
	dtri_n_g Qd(.clk(RCK),.d(RD),.g(G),.qb(SD),.qq(QD));
	dtri_n_g Qe(.clk(RCK),.d(RE),.g(G),.qb(SE),.qq(QE));
	dtri_n_g Qf(.clk(RCK),.d(RF),.g(G),.qb(SF),.qq(QF));
	dtri_n_g Qg(.clk(RCK),.d(RG),.g(G),.qb(SG),.qq(QG));
	dtri_n_g Qh(.clk(RCK),.d(RH),.g(G),.qb(SH),.qq(QH));
endmodule

1.2 dtri.v

输出为Q的D触发器。

复制代码
module dtri
(
	input clk,rst,d,
	output wire q
);

	reg q1;
	always @ (posedge clk)
		if(!rst)
			q1 <= 1'b0;
		else
		   q1 <= d;
		assign q = q1;
	
endmodule 

1.3 dtri_n_g.v

输出为~Q的D触发器。

复制代码
module dtri_n_g
(
	input clk,d,g,
	output wire qb,qq
);
	reg q1,q2;
	always @ (posedge clk)
		begin q1 <= ~d; end
	assign qb = q1;
	
	always @ (*)
		begin 
			if(g) q2 <= 1'b0;
			else 	q2 = ~q1;
		end
	assign  qq = q2;
endmodule

1.4 shift_register_tb.v

仿真程序。

复制代码
`timescale 1ns/100ps
module shift_register_tb();
	reg SCK,SI,RCK,SCLR,G;
	wire QA,QB,QC,QD,QE,QF,QG,QH,QH_s;
	
	initial
		begin 
			SCK=0;
			SI=0;
			RCK=0;
			SCLR=0;
			G=0;
			#20 SI=1;SCLR=1;
			#20 SI=0;RCK=~RCK;
			#10 RCK=~RCK;#10 RCK=~RCK;#10 RCK=~RCK;#10 RCK=~RCK;
			#10 RCK=~RCK;#10 RCK=~RCK;#10 RCK=~RCK;#10 RCK=~RCK;
			#10 RCK=~RCK;#10 RCK=~RCK;#10 RCK=~RCK;#10 RCK=~RCK;
			#10 RCK=~RCK;#10 RCK=~RCK;#10 RCK=~RCK;#10 RCK=~RCK;
			#10 RCK=~RCK;G=1;
			#10 SI=1;
			#20 SI=0;RCK=1;
			#10 RCK=0;G=0;
			#40 SCLR=0;
			#10 RCK=1;
			#10 RCK=0;SCLR=1;
		end
	always #10 SCK=~SCK;
	shift_register shift_1
	(
		.SCK(SCK),
		.SI(SI),
		.RCK(RCK),
		.SCLR(SCLR),
		.G(G),
		.QA(QA),
		.QB(QB),
		.QC(QC),
		.QD(QD),
		.QE(QE),
		.QF(QF),
		.QG(QG),
		.QH(QH),
		.QH_s(QH_s)
	);
endmodule

二.仿真验证结果

相关推荐
forgeda3 小时前
如何将FPGA设计验证效率提升1000倍以上(2)
fpga开发·前沿技术·在线调试·硬件断点·时钟断点·事件断点
9527华安14 小时前
FPGA实现40G网卡NIC,基于PCIE4C+40G/50G Ethernet subsystem架构,提供工程源码和技术支持
fpga开发·架构·网卡·ethernet·nic·40g·pcie4c
search716 小时前
写Verilog 的环境:逻辑综合、逻辑仿真
fpga开发
search71 天前
Verilog 语法介绍 1-1结构
fpga开发
小眼睛FPGA1 天前
【RK3568+PG2L50H开发板实验例程】Linux部分/FPGA dma_memcpy_demo 读写案例
linux·运维·科技·ai·fpga开发·gpu算力
幸运学者1 天前
xilinx axi datamover IP使用demo
fpga开发
搬砖的小码农_Sky1 天前
XILINX Zynq-7000系列FPGA的架构
fpga开发·架构
热爱学习地派大星1 天前
FPGA矩阵算法实现
fpga开发
热爱学习地派大星2 天前
Xilinx FPGA功耗评估
fpga开发·verilog·vivado·fpga功耗·xpe
搬砖的小码农_Sky2 天前
XILINX Ultrascale+ Kintex系列FPGA的架构
fpga开发·架构