北邮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

二.仿真验证结果

相关推荐
我爱C编程1 小时前
【仿真测试】基于FPGA的完整16QAM通信链路实现,含频偏锁定,帧同步,定时点,Viterbi译码,信道,误码统计
fpga开发·16qam·帧同步·卷积编码·viterbi译码·维特比译码·频偏锁定
s090713619 小时前
ZYNQ DMA to UDP 数据传输系统设计文档
网络协议·fpga开发·udp
燎原星火*21 小时前
QSPI IP核 基本参数
fpga开发
XINVRY-FPGA21 小时前
XCVU9P-2FLGC2104I Xilinx AMD Virtex UltraScale+ FPGA
嵌入式硬件·机器学习·计算机视觉·fpga开发·硬件工程·dsp开发·fpga
FPGA_小田老师21 小时前
FPGA Debug:PCIE一直自动重启(link up一直高低切换)
fpga开发·pcie debug·pcie初始化问题
hexiaoyan82721 小时前
视频信号检测板卡:208-Base Camera Link 图像信号模拟器
fpga开发·图像信号模拟器·视频信号检测·视频信号分析·智能图像分析
竹君子21 小时前
新能源知识库(151) RTDS和RT-LAB比较
fpga开发
brave and determined1 天前
可编程逻辑器件学习(day34):半导体编年史:从法拉第的意外发现到塑造现代文明的硅基浪潮
人工智能·深度学习·fpga开发·verilog·fpga·设计规范·嵌入式设计
FPGA_Linuxer1 天前
RFSOC PCIE 4.0读写测试
fpga开发
坏孩子的诺亚方舟1 天前
FPGA系统架构设计实践8_复位参考设计
fpga开发·系统架构·复位