南京邮电大学电工电子(数电)实验报告——组合逻辑电路 & 时序逻辑电路

这篇具有很好参考价值的文章主要介绍了南京邮电大学电工电子(数电)实验报告——组合逻辑电路 & 时序逻辑电路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、组合逻辑电路

(1)实验目的

5、使用ISE软件完成组合逻辑设计的输入并仿真
6、掌握Testbech中组合逻辑测试文件的写法
7、下载并测试实现的逻辑功能

(2)实验原理或设计过程

①4选1数据选择器

  • RTL代码
module m4_1(in0,in1,in2,in3,S,F);

	input in0,in1,in2,in3;   
	input [1:0]S;				//定义输入					
	
	output reg F;				//定义输出,F定义为reg型
	
	always @*					//敏感词使用*
	begin
		case(S)					//case语句实现选择输出
			2'b00:F<=in0;
			2'b01:F<=in1;
			2'b10:F<=in2;
			2'b11:F<=in3;		//实现输入S=00、01、10、11时,输出										in0,in1,in2,in3
		endcase
  end
    
endmodule
  • 仿真测试模块代码
`timescale 1ns / 1ps
module m4_1_tb;


	reg in0,in1,in2,in3;
	reg [1:0] S;

	wire F;

	m4_1 uut (
		.in0(in0),
		.in1(in1),
		.in2(in2),
		.in3(in3),
		.S(S), 
		.F(F)
	);						//例化模块
 
	initial begin
		in0=0;
		in1=0;
		in2=0;
		in3=0;
		S = 0;			//初始化输入

		#100;
        
		fork				//fork-join实现并行输入
			repeat(5) #400 S=S+1;		//每400ns S+1
			repeat(100)	#20 in0=~in0;	
			repeat(50)	#40 in1=~in1;
			repeat(25)	#80 in2=~in2;
			repeat(10)	#200 in3=~in3;	//输入in0,in1,in2,in3信号为不												同的脉冲信号,方便选择后观察
		join
	end
endmodule

②3-8译码器

  • RTL代码
module d3_8(D,Y);

	input [2:0]D;						//定义三位输入
	
	output reg[7:0]Y;					//定义八位输出

	always@(D)							//使用always块,敏感词选用D
	begin
		case(D)							//case语句实现3-8过程
			3'b000:Y=8'b1111_1110;
			3'b001:Y=8'b1111_1101;
			3'b010:Y=8'b1111_1011;
			3'b011:Y=8'b1111_0111;
			3'b100:Y=8'b1110_1111;
			3'b101:Y=8'b1101_1111;
			3'b110:Y=8'b1011_1111;
			3'b111:Y=8'b0111_1111;	//输入和输出一一选择对应
		endcase
	end
endmodule
  • 仿真测试模块代码
`timescale 1ns / 1ps
module d3_8_tb;

	reg [2:0] D;

	wire [7:0] Y;

	d3_8 uut (
		.D(D), 
		.Y(Y)
	);

	initial begin
		D = 0;
		#100;				//进行输入端口初始化
		
		repeat(10)		//重复十次
		begin
			D=3'b000;
			#20;
			D=3'b001;
			#20;
			D=3'b010;
			#20;
			D=3'b011;
			#20;
			D=3'b100;
			#20;
			D=3'b101;
			#20;
			D=3'b110;
			#20;
			D=3'b111;
			#20;			//依次使D等于0-7,观察输出
		end
	end  
endmodule

③8-3优先编码器

  • RTL代码
module en8_3(en,I,Y,Yx,Yn);
  
	input en;
	input [7:0]I;
	
	output reg[2:0]Y;
	output reg Yx,Yn;
	
	always@(I)
	begin
		if(!en)
		begin
			Y=3'b111;
			Yx=1;
			Yn=1;
		end
		else 
			begin
				if(I==8'b1111_1111)
				begin
					Y=3'b111;
					Yx=1;
					Yn=0;
				end
				else
					begin
						Yx=0;
						Yn=1;
						if(I[7]==0)
							Y=3'b000;
						else if(I[6]==0)
							Y=3'b001;
						else if(I[5]==0)
							Y=3'b010;
						else if(I[4]==0)
							Y=3'b011;
						else if(I[3]==0)
							Y=3'b100;
						else if(I[2]==0)
							Y=3'b101;
						else if(I[1]==0)
							Y=3'b110;
						else if(I[0]==0)
							Y=3'b111;
						
					end
			end
	end

endmodule
  • 仿真测试模块代码
`timescale 1ns / 1ps
module en8_3_tb;

	reg en;
	reg [7:0] I;

	wire [2:0] Y;
	wire Yx;
	wire Yn;

	en8_3 uut (
		.en(en), 
		.I(I), 
		.Y(Y), 
		.Yx(Yx), 
		.Yn(Yn)
	);
  
	initial begin
		en = 0;
		I = 0;

		#100;
        
		en=1;
		repeat(20)
			begin
			I=8'b1111_1111;
			#20;
			I=8'b0111_1111;
			#20;
			I=8'b1011_1111;
			#20;
			I=8'b1101_1111;
			#20;
			I=8'b1110_1111;
			#20;
			I=8'b1111_0111;
			#20;
			I=8'b1111_1011;
			#20;
			I=8'b1111_1101;
			#20;
			I=8'b1111_1110;
			#20;
		end
   
	end
      
endmodule

④十六进制七段LED显示译码器

南京邮电大学电工电子(数电)实验报告——组合逻辑电路 & 时序逻辑电路

  • RTL代码
module led7(D,Y,en);

	input [3:0]D;
	input en;
	
	output reg[6:0]Y;
	
	always@(D)
	begin
		if(!en)
			Y=7'b000_0000;
		else
			case(D)
				4'b0000:Y=7'b011_1111;
				4'b0001:Y=7'b000_0110;
				4'b0010:Y=7'b101_1011;
				4'b0011:Y=7'b100_1111;
				4'b0100:Y=7'b110_0110;
				4'b0101:Y=7'b110_1101;
				4'b0110:Y=7'b111_1101;
				4'b0111:Y=7'b000_0111;
				4'b1000:Y=7'b111_1111;
				4'b1001:Y=7'b110_1111;
				4'b1010:Y=7'b111_0111;
				4'b1011:Y=7'b111_1100;
				4'b1100:Y=7'b011_1001;
				4'b1101:Y=7'b101_1110;
				4'b1110:Y=7'b111_1001;
				4'b1111:Y=7'b111_0001;
			endcase
	end
	
endmodule
  • 仿真测试模块代码
`timescale 1ns / 1ps
module led7_tb;

	reg [3:0] D;
	reg en;

	wire [6:0] Y;

	led7 uut (
		.D(D), 
		.Y(Y), 
		.en(en)
	);

	initial begin
		D = 0;
		en = 0;

		#100;
        
		en=1;
		
		repeat(10)
		begin
			D=4'b0000;
			#20;
			D=4'b0001;
			#20;
			D=4'b0010;
			#20;
			D=4'b0011;
			#20;
			D=4'b0100;
			#20;
			D=4'b0101;
			#20;
			D=4'b0110;
			#20;
			D=4'b0111;
			#20;
			D=4'b1000;
			#20;
			D=4'b1001;
			#20;
			D=4'b1010;
			#20;
			D=4'b1011;
			#20;
			D=4'b1100;
			#20;
			D=4'b1101;
			#20;
			D=4'b1110;
			#20;
			D=4'b1111;
			#20;
		end
	end
endmodule

(3)实验数据分析和实验结果

1、四选一数据选择器波形图:
南京邮电大学电工电子(数电)实验报告——组合逻辑电路 & 时序逻辑电路
2、3-8译码器波形图:
南京邮电大学电工电子(数电)实验报告——组合逻辑电路 & 时序逻辑电路
3、8-3优先编码器波形图:
南京邮电大学电工电子(数电)实验报告——组合逻辑电路 & 时序逻辑电路

(4)仿真波形图

1、四选一数据选择器仿真图:
南京邮电大学电工电子(数电)实验报告——组合逻辑电路 & 时序逻辑电路
2、3-8译码器仿真图:
南京邮电大学电工电子(数电)实验报告——组合逻辑电路 & 时序逻辑电路
3、8-3优先编码器仿真图:
南京邮电大学电工电子(数电)实验报告——组合逻辑电路 & 时序逻辑电路
4、十六进制7段led显示译码器:
南京邮电大学电工电子(数电)实验报告——组合逻辑电路 & 时序逻辑电路

二、时序逻辑电路

(1)实验目的

1、使用ISE软件完成时序逻辑电路的设计输入并仿真
2、掌握tb中时序逻辑测试文件的写法
3、下载并测试实现的逻辑电路

(2)实验原理或设计过程

①74161计数器

  • RTL代码
module and74161(CR,ld,P,T,clk,Q,rst,A,B,C,D);

	input CR,ld,P,T,rst;
	input clk;
	input A,B,C,D;
	
	output reg[3:0]Q;
	
	always @(posedge clk,negedge rst)
	begin
		if(rst==0)
			Q<=4'b0;
		else if(CR==0)
			Q<=4'b0;
		else if(CR&ld==0)
			Q<={A,B,C,D};
		else if(CR&ld&P&T)
			Q<=Q+1;
		else if(CR&ld&P==0)
			Q<=Q;
		else if(CR&ld&T==0)
			Q<=Q;
	end

endmodule
  • 仿真测试模块代码
`timescale 1ns / 1ps
module and74161_tb;

	reg CR;
	reg ld;
	reg P;
	reg T;
	reg clk;
	reg A,B,C,D;
	reg rst;

	wire [3:0] Q;
	
	and74161 uut (
		.CR(CR), 
		.ld(ld), 
		.P(P), 
		.T(T), 
		.clk(clk), 
		.Q(Q), 
		.A(A),
		.B(B),
		.C(C),
		.D(D),
		.rst(rst)
	);

	initial begin
		CR = 0;
		ld = 0;
		P = 0;
		T = 0;
		clk = 0;
		A=0;
		B=0;
		C=0;
		D=0;
		rst=0;

		#100;
		A=0; B=1;C=0;D=1;
		rst=1;
		CR=1;ld=0;#50;			//ABCD
		
		rst=1;
		CR=0;ld=1;P=1;T=1;
		#20;			//清0
		
		rst=1;
		CR=1;ld=0;P=0;T=0;
		#20;			//清0
		
		rst=1;
		CR=1;ld=1;P=0;T=1;
		#20;	

		rst=1;
		CR=1;ld=1;P=1;T=0;
		#20;			
		
		rst=1;
		CR=1;ld=1;P=1;T=1;
		#2000;
	
	end
      always #7 clk=~clk;
endmodule

②D触发器(异步复位与同步时能、异步置位与异步复位)

  • RTL代码
module dff(D,EN,CLK,sd,rd,Q,QN);

	input D,EN,CLK,sd,rd;
	
	output reg Q;
	output reg QN;
	
	always @(posedge CLK)
	begin
		if(EN&sd==0)
		begin
			Q<=1;QN<=0;
		end
		else if(EN&sd==1&rd==0)
		begin
			Q<=0;QN<=1;
		end
		else if(EN&sd==1&rd==1)
		begin
			Q<=D;QN<=~D;
		end
		else 
		begin
			Q<=Q;QN<=QN;
		end
	
	end

endmodule
  • 仿真测试模块代码
`timescale 1ns / 1ps
module dff_tb;

	reg D;
	reg EN;
	reg CLK;
	reg sd;
	reg rd;

	wire Q;
	wire QN;

	dff uut (
		.D(D), 
		.EN(EN), 
		.CLK(CLK), 
		.sd(sd), 
		.rd(rd), 
		.Q(Q), 
		.QN(QN)
	);

	initial begin
		D = 0;
		EN = 0;
		CLK = 0;
		sd = 0;
		rd = 0;
		#100;
		
		EN=1;
	end
	initial
		fork
			forever	#100 rd=rd+1;
			
			forever	#200 sd=sd+1;
			
			forever #20 D=D+1;
		join
	
	always #10 CLK=~CLK;			//输入时钟
 
endmodule

③模M计数器(实现模5计数器,五个状态为3,4,5,6,7)

  • RTL代码
module counter5(en,clk,cnt,co,rst_n);

	input en;
	input clk;
	input rst_n;
	
	output reg [3:0]cnt;
	output co;
	
	always @(posedge clk,negedge rst_n)
	begin
		if(!rst_n)
			cnt<=4'b0011;
		else if(en&cnt==4'b0111)
			cnt<=4'b0011;
		else if(en)
				cnt<=cnt+1'b1;
		else
			cnt<=cnt;
	end
	
	assign co=cnt[0]&cnt[1]&cnt[2];

endmodule
  • 仿真测试模块代码
`timescale 1ns / 1ps
module counter5_tb;

	reg en;
	reg clk;
	reg rst_n;

	wire [3:0] cnt;
	wire co;

	counter5 uut (
		.en(en), 
		.clk(clk), 
		.cnt(cnt), 
		.co(co), 
		.rst_n(rst_n)
	);

	initial begin
		en = 0;
		clk = 0;
		rst_n = 0;

		#100;
		
		en=1;
		rst_n=1;
	end
	always #7 clk=~clk;
      
endmodule

④移位寄存器74194

  • RTL代码
module reg74194(cr,clk,sr,sl,M,Q,D);

	input cr,clk,sr,sl;
	input [3:0]D;
	input [1:0]M;
	
	output reg[3:0]Q;
	
	always @(posedge clk)
	begin
		if(!cr)
			Q<=4'b0000;
		else if(cr&M==2'b11)
			Q<=D;
		else if(cr&M==2'b01)
			begin
				Q[2:0]<=Q[3:1];
				Q[3]<=sr;
			end
		else if(cr&M==2'b10)
			begin
				Q[3:1]<=Q[2:0];
				Q[0]<=sl;
			end
		else 
			Q<=Q;
	end

endmodule
  • 仿真测试模块代码
`timescale 1ns / 1ps
module reg74194_tb;

	reg cr;
	reg clk;
	reg sr;
	reg sl;
	reg [1:0] M;
	reg [3:0] D;

	wire [3:0] Q;

	reg74194 uut (
		.cr(cr), 
		.clk(clk), 
		.sr(sr), 
		.sl(sl), 
		.M(M), 
		.Q(Q), 
		.D(D)
	);

	initial begin
		cr = 0;
		clk = 0;
		sr = 0;
		sl = 0;
		M = 0;
		D = 0;

		#100;
       
		cr=1;M=2'b11;
		D=4'b1011;
		#50;
		
		cr=1;M=2'b01;sr=1'b1;
		#50;
		
		cr=1;M=2'b01;sr=1'b0;
		#50;
		
		cr=1;M=2'b10;sl=1'b1;
		#50;
		
		cr=1;M=2'b10;sl=1'b0;
		#50;
		
		cr=1;M=2'b00;
		#50;

	end
      always #7 clk=~clk;
endmodule

(3)实验数据分析和实验结果

1、74161仿真波形图:
南京邮电大学电工电子(数电)实验报告——组合逻辑电路 & 时序逻辑电路

2、D触发器(异步复位与同步使能、异步置位与异步复位)
南京邮电大学电工电子(数电)实验报告——组合逻辑电路 & 时序逻辑电路

3、模M计数器(实现模5计数器,五个状态为3,4,5,6,7)
南京邮电大学电工电子(数电)实验报告——组合逻辑电路 & 时序逻辑电路

4、移位寄存器74194
左移:
南京邮电大学电工电子(数电)实验报告——组合逻辑电路 & 时序逻辑电路

右移:
南京邮电大学电工电子(数电)实验报告——组合逻辑电路 & 时序逻辑电路文章来源地址https://www.toymoban.com/news/detail-443711.html

到了这里,关于南京邮电大学电工电子(数电)实验报告——组合逻辑电路 & 时序逻辑电路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 南京邮电大学数学实验最新版

    1.1(1) 1.1(2) 1.2 1.3 1.4 1.5 1.6 1.7(1) f.m g.m main 1.7(2) f1.m g1.m main 1.8(1) 1.8(2) 1.9 1.10 1.11 1.12(1) 1.12(2) fun.m Main.m 2.1(1) dd.m main 2.2 2.3 Martin.m 2.4 2.5(1) 2.5(2) 3.1 结果 3.2 结果 3.3(1) 3.3(3) 3.4 4.1 4.3 4.4 4.5(1) 4.5(2) 4.6 4.7 4.8 4.9 实验一 //散点图 //模型建立 //数据预测

    2024年02月11日
    浏览(37)
  • 2023南京邮电大学通达学院《数学实验》MATLAB实验答案

    四月维夏,六月徂暑。 勤将励勉,勿望再晨。 ——赠nmy 南京邮电大学通达学院《数学实验》MATLAB实验答案 答案更新时间:2023.04.28,修改了4.2的存疑部分。已更新完成,如无错误不在更新 为了方便核算,我在代码中单独将 m 定义为自变量运算或者直接以m=117代入,作业中可以

    2023年04月20日
    浏览(103)
  • 南京邮电大学数据库实验一(SQL语言)

    (1) 通过上机实践,熟悉Oracle的SQL * Plus环境及使用方法 (2) 掌握SQL语言,能熟练运用SQL语言进行数据定义和数据操纵 (3) 加深对关系数据模型的数据结构和约束的理解 硬件:微型计算机 软件:Windows 操作系统、ORACLE 10G 实验原理基于第二、三、五章的相关内容。 实验内容如下:

    2024年04月27日
    浏览(36)
  • 南京邮电大学Web技术双语实验一(客户端HTML脚本编写)

    实验目的: (1) 通过上机实践,熟悉 HTML 和 JavaScript 脚本实现技术。 (2) 加深对 Web 编程的认识 实验要求: 1 编写个人主页,要求包含如下信息。 (1) 标题“欢迎访问×××的主页” (2) 个人简介,包含照片。 (3) 个人经历简介,以有序列表形式显示。 (4) 个人最

    2024年02月05日
    浏览(52)
  • 南京邮电大学算法与设计实验四:回溯法(最全最新,与题目要求一致)

    要求用回溯法求解8-皇后问题,使放置在8*8棋盘上的8个皇后彼此不受攻击,即:任何两个皇后都不在同一行、同一列或同一斜线上。请输出8皇后问题的所有可行解。 用回溯法编写一个递归程序解决如下装载问题:有n个集装箱要装上2艘载重分别为c1和c2的轮船,其中集装箱i的

    2024年02月05日
    浏览(37)
  • 南京邮电大学算法与设计实验一:分治策略(最全最新,与题目要求一致)

    实验原理: 1、用分治法实现一组无序序列的两路合并排序和快速排序。要求清楚合并排序及快速排序的基本原理,编程实现分别用这两种方法将输入的一组无序序列排序为有序序列后输出。 2、采用基于“五元中值组取中值分割法”(median-of-median-of-five partitioning)的线性时

    2024年04月17日
    浏览(75)
  • 南京邮电大学算法与设计实验二:贪心算法(最全最新,与题目要求一致)

    三、实验原理及内容 实验原理: 1 、用贪心法实现求两序列的一般背包问题。要求掌握贪心法思想在实际中的应用,分析一般背包的问题特征,选择算法策略并设计具体算法,编程实现贪心选择策略的比较,并输出最优解和最优解值。 2 、用贪心法求解带时限的 ( 单位时间

    2024年02月05日
    浏览(35)
  • 南京邮电大学汇编语言程序设计实验二(用户登录验证程序的设计)

    1.掌握循环程序的编写以及结束循环的方法。 2.掌握DOS、BIOS功能调用的使用方法。 用户登录验证程序的实现 程序执行后,给出提示操作,请用户键入用户名和密码;用户在键入密码时,程序不回显键入字符;只有当用户键入的用户名,密码字符串和程序内定的字符串相同时

    2023年04月18日
    浏览(43)
  • 南京邮电大学汇编语言程序设计实验一(汇编语言语法练习与代码转换)

    排除语法错误:给出的是一个通过比较法完成8位二进制数转换成十进制数送屏幕显示功能的汇编语言源程序,但有很多语法错误。要求实验者按照原样对源程序进行编辑,汇编后,根据TASM给出的信息对源程序进行修改,知道没有语法错误为止。然后进行链接,并执行相应可

    2024年02月08日
    浏览(47)
  • 南京邮电大学数据结构实验一(线性表的基本运算及多项式的算术运算)(代码篇)

    小伙伴们要多多体会,不要全部借鉴哦!

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包