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

二.仿真验证结果

相关推荐
zlinear数据采集卡10 小时前
ZLinear产品线全景对比:D223 vs DABL7606 vs DABL-G511选型指南
arm开发·嵌入式硬件·算法·fpga开发·开源
何事误红尘14 小时前
ZYNQ学习FPGA笔记(一):vivado安装、XC7Z045
fpga开发
zlinear数据采集卡1 天前
D223的SRAM硬件记录仪:外部触发与瞬态波形捕获方案
arm开发·嵌入式硬件·fpga开发·开源
szxinmai主板定制专家1 天前
基于 RK3588 + Xilinx Kintex-7 FPGA 异构工业主控板设计方案
arm开发·人工智能·嵌入式硬件·fpga开发·zynq
Rambo.xia1 天前
RFSoC高速采集卡设计项目:一块板卡串联综合优化5大核心技术
单片机·嵌入式硬件·fpga开发
XMAIPC_Robot1 天前
RK3588+STM32:高性能机器人运动控制解决方案,兼顾实时性与AI算力
人工智能·stm32·嵌入式硬件·算法·fpga开发·机器人·arm+fpga
zlinear数据采集卡2 天前
D223的DDS信号发生器:10000点查找表与4通道16位DAC波形输出
arm开发·嵌入式硬件·fpga开发·开源
物质波波波2 天前
WS-RPE:面向边缘物理AI实时特征值计算的硬件工作窃取调度器与冗余PE激活架构
人工智能·fpga开发·架构·系统架构·硬件架构
我爱C编程2 天前
基于FPGA的DSB调制解调系统verilog开发
fpga开发·verilog·fpga·dsb
zlinear数据采集卡2 天前
USB HS 480M高速传输与SRAM记录仪:DABM-D223数据存储系统全解析
arm开发·嵌入式硬件·fpga开发·开源