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

二.仿真验证结果

相关推荐
szxinmai主板定制专家1 小时前
【国产NI替代】基于FPGA的32通道(24bits)高精度终端采集核心板卡
大数据·人工智能·fpga开发
HIZYUAN7 小时前
AGM FPGA如何配置上拉或者下拉电阻
fpga开发
∑狸猫不是猫7 小时前
(13)CT137A- 简易音乐盒设计
fpga开发
ThreeYear_s13 小时前
基于FPGA 的4位密码锁 矩阵键盘 数码管显示 报警仿真
fpga开发·矩阵·计算机外设
Anin蓝天(北京太速科技-陈)19 小时前
252-8路SATAII 6U VPX高速存储模块
fpga开发
如何学会学习?21 小时前
2. FPGA基础了解--全局网络
fpga开发
Anin蓝天(北京太速科技-陈)21 小时前
271-基于XC7V690T的12路光纤PCIe接口卡
嵌入式硬件·fpga开发
碎碎思1 天前
FPGA新闻速览-WiMi开发基于FPGA的数字量子计算机验证技术
fpga开发·量子计算
hi942 天前
Vivado - 远程调试 + 远程综合实现 + vmWare网络配置 + NFS 文件共享 + 使用 VIO 核
嵌入式硬件·fpga开发·vivado 远程开发·vmware网络配置
乘风~&2 天前
基于发FPGA 练手智能小车顶层文件
fpga开发