南京邮电大学电工电子(数电)实验报告——组合逻辑电路 时序逻辑电路
文章目录
- 一、组合逻辑电路
- (1)实验目的
- (2)实验原理或设计过程
- ①4选1数据选择器
- ②3-8译码器
- ③8-3优先编码器
- ④十六进制七段LED显示译码器
- (3)实验数据分析和实验结果
- (4)仿真波形图
- 二、时序逻辑电路
- (1)实验目的
- (2)实验原理或设计过程
- ①74161计数器
- ②D触发器(异步复位与同步时能、异步置位与异步复位)
- ③模M计数器(实现模5计数器,五个状态为3,4,5,6,7)
- ④移位寄存器74194
- (3)实验数据分析和实验结果
一、组合逻辑电路
(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 @* //敏感词使用*begincase(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,in3endcaseendendmodule
- 仿真测试模块代码
`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 beginin0=0;in1=0;in2=0;in3=0;S = 0; //初始化输入#100;fork //fork-join实现并行输入repeat(5) #400 S=S+1; //每400ns S+1repeat(100) #20 in0=~in0; repeat(50) #40 in1=~in1;repeat(25) #80 in2=~in2;repeat(10) #200 in3=~in3; //输入in0,in1,in2,in3信号为不 同的脉冲信号,方便选择后观察joinend
endmodule
②3-8译码器
- RTL代码
module d3_8(D,Y);input [2:0]D; //定义三位输入output reg[7:0]Y; //定义八位输出always@(D) //使用always块,敏感词选用Dbegincase(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; //输入和输出一一选择对应endcaseend
endmodule
- 仿真测试模块代码
`timescale 1ns / 1ps
module d3_8_tb;reg [2:0] D;wire [7:0] Y;d3_8 uut (.D(D), .Y(Y));initial beginD = 0;#100; //进行输入端口初始化repeat(10) //重复十次beginD=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,观察输出endend
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)beginif(!en)beginY=3'b111;Yx=1;Yn=1;endelse beginif(I==8'b1111_1111)beginY=3'b111;Yx=1;Yn=0;endelsebeginYx=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;endendendendmodule
- 仿真测试模块代码
`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 beginen = 0;I = 0;#100;en=1;repeat(20)beginI=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;endendendmodule
④十六进制七段LED显示译码器
- RTL代码
module led7(D,Y,en);input [3:0]D;input en;output reg[6:0]Y;always@(D)beginif(!en)Y=7'b000_0000;elsecase(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;endcaseendendmodule
- 仿真测试模块代码
`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 beginD = 0;en = 0;#100;en=1;repeat(10)beginD=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;endend
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)beginif(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;endendmodule
- 仿真测试模块代码
`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 beginCR = 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; //ABCDrst=1;CR=0;ld=1;P=1;T=1;#20; //清0rst=1;CR=1;ld=0;P=0;T=0;#20; //清0rst=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;endalways #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)beginif(EN&sd==0)beginQ<=1;QN<=0;endelse if(EN&sd==1&rd==0)beginQ<=0;QN<=1;endelse if(EN&sd==1&rd==1)beginQ<=D;QN<=~D;endelse beginQ<=Q;QN<=QN;endendendmodule
- 仿真测试模块代码
`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 beginD = 0;EN = 0;CLK = 0;sd = 0;rd = 0;#100;EN=1;endinitialforkforever #100 rd=rd+1;forever #200 sd=sd+1;forever #20 D=D+1;joinalways #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)beginif(!rst_n)cnt<=4'b0011;else if(en&cnt==4'b0111)cnt<=4'b0011;else if(en)cnt<=cnt+1'b1;elsecnt<=cnt;endassign 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 beginen = 0;clk = 0;rst_n = 0;#100;en=1;rst_n=1;endalways #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)beginif(!cr)Q<=4'b0000;else if(cr&M==2'b11)Q<=D;else if(cr&M==2'b01)beginQ[2:0]<=Q[3:1];Q[3]<=sr;endelse if(cr&M==2'b10)beginQ[3:1]<=Q[2:0];Q[0]<=sl;endelse Q<=Q;endendmodule
- 仿真测试模块代码
`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 begincr = 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;endalways #7 clk=~clk;
endmodule
(3)实验数据分析和实验结果
1、74161仿真波形图:
2、D触发器(异步复位与同步使能、异步置位与异步复位)
3、模M计数器(实现模5计数器,五个状态为3,4,5,6,7)
4、移位寄存器74194
左移:
右移:
南京邮电大学电工电子(数电)实验报告——组合逻辑电路 时序逻辑电路相关推荐
- 南京邮电大学电工电子基础B实验六(组合逻辑电路)
一. 实验目的 1.掌握基本门电路的实际应用: 2.掌握基本门多余端的处理方法: 3.验证所设计电路的逻辑功能: 4.判断.观察组合逻辑电路险象并消除险象的方法: 二. 主要仪器设备及软件 硬件:逻辑 ...
- 南京邮电大学电工电子基础B实验五(串联谐振电路)
RLC串联谐振电路 一. 实验目的 1.研究RLC串联谐振电路的幅频特性: 2.加深理解品质因数Q与电路其他参量的关系: 二. 主要仪器设备及软件 硬件:函数信号发生器.示波器.万用表.电阻.电感.电 ...
- 南京邮电大学电工电子基础B实验四(戴维南与诺顿定理)
戴维南与诺顿定理 一. 实验目的 1.学习几种常用的等效电源的测量方法 2.比较几种测量方法所适用的情况 3.分析各种方法的误差大小及其产生的原因 二. 主要仪器设备及软件 硬件:交流电源.电容.电感 ...
- 数电实验报告实验一_大二下学期的两三事之数电实验amp;课设
数电实验&课设 叮 写在前面 这学期的数电实验老师是陈W老师.上学期的模电,选过一次他的课,线下教学,老师讲课游刃自如,点到为止,但又醍醐灌顶:这学期线上教学,可能是软件运用不熟练,他多少有些 ...
- 南京邮电大学通达学院c语言实验报告,南京邮电大学通达学院c语言程序报告.docx...
南京邮电大学通达学院c语言程序报告 南京邮电大学通达学院程序设计(上机)报告 题 目: R015M P008E 专 业 学 生 姓 名 班 级 学 号 指 导 教 师 日 期 2015年5月 评 分 ...
- 南京邮电大学通达学院c语言实验报告,南京邮电大学通达学院c语言程序报告..docx...
南京邮电大学通达学院c语言程序报告. 南京邮电大学通达学院程序设计(上机)报告题 目: R015M P008E专 业 学 生 姓 名 班 级 学 号 指 导 教 师 日 期 2015年5月 评 分 细 ...
- 数电实验(组合逻辑电路、时序电路,555定时器)
本文章为数电实验整理内容,其电路仿真资料可以在我的资料中自行下载,其包括所说内容全部仿真内容. 一.组合逻辑电路的设计与验证 利用 二输入四与非门74LS00和二输入四异或门74LS86和LED来达到 ...
- 数电学习(六、时序逻辑电路)(二)
文章目录 若干常用的时序逻辑电路 寄存器 移位寄存器 计数器 同步计数器 同步二进制计数器 同步二进制加法计数器 经典设计 74161 同步二进制减法计数器 同步二进制加减计数器 同步十进制计数器 异 ...
- 数电学习(六、时序逻辑电路)(三)
文章目录 时序逻辑电路的设计方法 同步时序逻辑电路的设计方法 一般步骤 改进步骤 例:蚂蚁走迷宫 背景 分析 继续编码状态,然后写出状态图,然后卡诺图化简,得到方程 设计总结 时序逻辑电路的设计方法 ...
最新文章
- 亲测_精简版Fiddler抓包手机端GET请求过程.
- 基于Licode的WebRTC全球分布式架构
- 森近林之助【字符串处理】
- python扫描端口脚本_python写的端口扫描脚本
- 吃货开发 阶段01 类的定义 方法的布局 0925
- 【报告分享】微信视频号新机遇白皮书.pdf
- java 返回值给c_Java有陷阱,用时需谨慎——慎用入参做返回值
- Geotools之“Hello World”——打开本地shp文件并显示
- Hyperledger下子项目
- Python多进程之Pool
- java 各省市区代码表
- Googel浏览器添加百度搜索引擎
- 使用sysprep.exe遇到windows无法完成系统配置。若要尝试恢复配置,请重新启动计算机
- indesign中如何锁定零点_indesign基础知识教程【indesign软件基础知识技巧】
- 【STM32】NRF24L01模块的收发调试
- 关于微信卡券47001的问题
- 数据库系统概念-第六版 - charter 1 - 笔记
- 经典Windows编程书单
- Java 字符串分割三种方法
- JavaScript中的ES6语法
热门文章
- 收发一体超声波测距离传感器模块_超声波模块HC-SR04简介以及编程
- 满分室间质评之GATK Somatic SNV+Indels+CNV+SV(上)
- C语言的驱动法编程详细解析
- 华为弹性云服务器ECS,协同优化网络产业信息
- 开学需要带什么?宿舍必备爱用物清单
- SlySoft.Game.Jackal.Pro.v3.0.0.5-YAG
- nvidia控制面板点了没反应win7_Win7系统打不开Nvidia控制面板提示“停止工作”怎么办...
- 明远智睿5G工业网关远程联动,打造一支“精锐部队”
- html自定义菜单按钮,自定义菜单:Menu button
- java 阶梯价格计算_【java】求阶梯型的服务费总和