文档库 最新最全的文档下载
当前位置:文档库 › 4×4键盘扫描时序逻辑电路的VHDL模型实验

4×4键盘扫描时序逻辑电路的VHDL模型实验

4×4键盘扫描时序逻辑电路的VHDL模型实验
4×4键盘扫描时序逻辑电路的VHDL模型实验

汕头大学实验报告

实验三4×4键盘扫描时序逻辑电路的VHDL模型实验

一、实验目的

1、了解普通4×4键盘扫描的原理。

2、掌握组合逻辑电路和时序逻辑电路的混和设计。

3、进一步加深七段码管显示过程的理解。

二、硬件要求

1、4×4键盘阵列。

2、FPGA主芯片。

3、可变时钟源。

4、七段码显示区。

5、LED显示模块。

三、实验原理

本实验主要完成的实验是完成4×4键盘扫描的,然后获取其键值,并对其进行编码,从而进行按键的识别,并将相应的按键值进行显示。

键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出4行为高电平,然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。

获取到行值和列值以后,组合成一个8位的数据,根据实现不同的编码在对每个按键进行匹配,找到键值后在7段码管和LED显示。

四、实验内容及步骤

本实验内容是完成4×4键盘的扫描,然后将正确的键值进行显示,实验步骤如下:

1、编写键盘扫描和显示的VHDL代码。

2、用MaxPlusII对其进行编译仿真。

3、在仿真确定无误后,选择芯片ACEX1K EP1K30QC208。

4、给芯片进行管脚绑定,在此进行编译。

5、根据自己绑定的管脚,在实验箱上对键盘接口、显示接口和FPGA之间进行正确连

线。

6、给目标板下载代码,在4×4键盘输入键值,观看实验结果。

五、VHDL程序设计代码及结果

1、4×4键盘扫描源程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY Vhdl1 IS

PORT(

CLK_1K : IN STD_LOGIC; --时钟输入1KHZ

CLK_40K : IN STD_LOGIC; --40K TimeClk

KEY_LIE : IN STD_LOGIC_VECTOR(3 DOWNTO 0);-- 列输入

START :OUT STD_LOGIC; --二-十进制数据输出标志

KEY_HANG :OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --行输出

DA TA_P : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--二-十进制数输出

DISP_DA TA : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--数码管显示译码输出

DISP_SEL : OUT STD_LOGIC_VECTOR(1 downto 0));--数码管显示扫描输出

END ;

ARCHITECTURE RTL OF Vhdl1 IS

SIGNAL INT : STD_LOGIC; --列与非信号

SIGNAL CLK_SEL : STD_LOGIC;--键值控制1khz的时钟信号

SIGNAL START_REG:STD_LOGIC; --数据输出标志信号

SIGNAL DISP_SEL_REG:STD_LOGIC_VECTOR(1 DOWNTO 0);--数码管显示扫描信号

SIGNAL DATA_L,DATA_H:STD_LOGIC_VECTOR(3 DOWNTO 0);--二-十进制低位、高位信号SIGNAL DATA_TMP:STD_LOGIC_VECTOR(3 DOWNTO 0);--二-十进制低位高位暂存信号

SIGNAL KEY_HANG_TMP:STD_LOGIC_VECTOR(3 DOWNTO 0);--行输出信号

SIGNAL DISP_DA TA_REG:STD_LOGIC_VECTOR(3 DOWNTO 0); --二-十进制低位、高位暂存信号(数码管用)

SIGNAL KEY_CODE:STD_LOGIC_VECTOR(7 DOWNTO 0);--行列相并信号

SIGNAL DATA_P_REG:STD_LOGIC_VECTOR(7 DOWNTO 0); --二-十进制数信号

-------------------------------------------------------------------------------

BEGIN

KEY_CODE<=KEY_HANG_TMP&KEY_LIE;--行、列相并

DATA_P<=DATA_P_REG;

START<= START_REG;

KEY_HANG<=KEY_HANG_TMP;

DISP_SEL<=DISP_SEL_REG;

CLK_SEL<=CLK_1K AND ( NOT INT);--无键按下时有CLK-SEL时钟信号输出

--------------------------------------------------

PROCESS (CLK_SEL,CLK_40K , INT)

V ARIABLE STA TE : INTEGER RANGE 0 TO 3 ;

BEGIN

IF RISING_EDGE(CLK_40K) THEN --一个40K的脉冲上升沿到来输入一次列状态以判断是否有按键按下

INT<= NOT (KEY_LIE(3) AND KEY_LIE(2) AND KEY_LIE(1) AND KEY_LIE(0));

END IF;

IF RISING_EDGE(CLK_SEL) THEN --一个1K的脉冲的上升沿到来输出一个带表行的状态

CASE STATE IS--变量表示状态机,4循环

WHEN 0=>

KEY_HANG_TMP<="1110";

STA TE :=1;

WHEN 1 =>

KEY_HANG_TMP<="1101";

STATE :=2 ;

WHEN 2 =>

KEY_HANG_TMP<="1011";

STATE :=3;

WHEN 3 =>

KEY_HANG_TMP<="0111";

STATE :=0;

END CASE;

END IF;

END PROCESS;

PROCESS (CLK_40K , INT)--进程是并行的

V ARIABLE STA TE :INTEGER RANGE 0 TO 3;

V ARIABLE COUNTER : INTEGER RANGE 0 TO 31;

BEGIN

IF INT='0' THEN

STATE:=0;

COUNTER:=0;

ELSIF RISING_EDGE(CLK_40K) THEN

CASE STATE IS

WHEN 0 =>

DATA_TMP <= DATA_L;--低四位放入暂存信号内

STATE:=1;

WHEN 1 =>--再嵌套一个CASE语句

CASE KEY_CODE IS--实现把像并数据译码十六进制的1到F

WHEN "01110111" =>

DA TA_L <="0001";--把1放入低四位

DA TA_H <=DA TA_TMP;--把暂存信号的内容放入高四位,相相当于向左移位

STA TE:=2;--跳出内嵌套CASE语句,转向外CASE语句的状态2 WHEN "01111011" =>

DA TA_L <="0010";

DA TA_H <=DATA_TMP;

STATE:=2;

WHEN "01111101" =>

DA TA_L <="0011";

DA TA_H <=DATA_TMP;

STATE:=2;

WHEN "01111110" =>

DATA_L <="0100";

DA TA_H <=DATA_TMP;

STATE:=2;

WHEN "10110111" =>

DA TA_L <="0101";

DA TA_H <=DATA_TMP;

STATE:=2;

WHEN "10111011" =>

DA TA_L <="0110";

DA TA_H <=DATA_TMP;

STATE:=2;

WHEN "10111101" =>

DA TA_L <="0111";

DA TA_H <=DATA_TMP;

STATE:=2;

WHEN "10111110" =>

DA TA_L <="1000";

DA TA_H <=DATA_TMP;

STATE:=2;

WHEN "11010111" =>--9键

DA TA_L <="1001";

DA TA_H <=DATA_TMP;

STATE:=2;

WHEN "11011011" =>--0键

DA TA_L <="0000";

DA TA_H <=DATA_TMP;

STATE:=2;

WHEN "11011101" =>--A键,实现步进加一功能IF DA TA_H ="1001" THEN

IF DA TA_L="1001" THEN

DATA_H<="1001";

DATA_L<="1001";

ELSE DA TA_L<=DATA_L + 1;

END IF;

ELSIF DA TA_L="1001" THEN

DATA_L<="0000";

DATA_H<=DATA_H+1;

ELSE

DATA_L<=DATA_L+1;

DATA_H<=DATA_H;

END IF;

STATE:=2;

WHEN "11011110" =>--B键,实现步键加十

IF DA TA_H="1001" THEN

DA TA_H<="1001";

ELSE

DATA_L<=DATA_L;

DATA_H<= DATA_H+1;

END IF;

STATE:=2;

WHEN "11100111" =>--C键,实现步进减一

IF DA TA_L="0000" AND DATA_H="0000" THEN

DATA_L<="0000";

DATA_H<="0000";

ELSIF DA TA_L="0000" THEN

DA TA_L<="1001";

DA TA_H<= DATA_H-1;

ELSE

DATA_L <=DATA_L-1;

DATA_H<=DATA_H;

END IF;

STA TE:=2;

WHEN "11101011"=>--D键,实现步进减十

IF DA TA_H="0000" THEN

DA TA_H<="0000";

ELSE

DATA_L<=DATA_L;

DATA_H<=DATA_H-1;

END IF;

STATE:=2;

WHEN "11101110" =>--E键,实现送数功能

DA TA_L<=DATA_L;

DA TA_H<=DATA_H;

DATA_P_REG<=DATA_H&DATA_L;

START_REG<='1';--数据输出标志信号置一

STATE:=2;

WHEN"11101101" =>--F键,实现清零功能

DA TA_L<="0000";

DA TA_H<="0000";

STATE:=2;

WHEN OTHERS =>--不可缺少

STATE:=2;

END CASE;

WHEN 2 =>--状态2实现去抖动功能

IF COUNTER=31 THEN --计数延时去抖

COUNTER:=0;

STA TE:=3;

ELSE

COUNTER:=COUNTER+1;

STATE:=2;

END IF;

WHEN 3 =>-- 清除数据输出标志

START_REG<='0';

STA TE:=3;

END CASE;

END IF;

END PROCESS;

PROCESS (CLK_1K,DA TA_L,DATA_H)--数码管循环显示

V ARIABLE STA TE: INTEGER RANGE 0 TO 1;

BEGIN

IF RISING_EDGE(CLK_1K) THEN

CASE STATE IS

WHEN 0 =>

DISP_SEL_REG<="10";-- 输入10到数码管显示扫描信号

DISP_DA TA_REG<=DATA_L;--二-十进制低高位暂存节点

STATE:=1;

WHEN 1 =>

DISP_SEL_REG<="01";

DISP_DA TA_REG<=DATA_H;

STATE:=0;

END CASE;

END IF;

END PROCESS;

PROCESS(CLK_1K,DISP_DA TA_REG)--数码管译码

BEGIN

IF RISING_EDGE(CLK_1K) THEN

CASE DISP_DA TA_REG IS

WHEN "0000"=>

DISP_DA TA<="1111110";--0

WHEN "0001"=>

DISP_DA TA<="0110000";--1

WHEN "0010"=>

DISP_DA TA<="1101101";

WHEN "0011"=>

DISP_DA TA<="1111001";

WHEN "0100"=>

DISP_DA TA<="0110011";

WHEN "0101"=>

DISP_DA TA<="1011011";

WHEN "0110"=>

DISP_DA TA<="1011111";

WHEN "0111"=>

DISP_DA TA<="1110000";

WHEN "1000"=>

DISP_DA TA<="1111111";

WHEN "1001"=>

DISP_DA TA<="1111011";

WHEN OTHERS =>

DISP_DA TA<="0000000";

END CASE;

END IF;

END PROCESS;

END;

2、实验现象

(1)38译码器

六、思考题

1、总结FPGA是如何识别按键的?与单片机读取键值有何不同?

答:FPGA的所有I/O控制块允许每个I/O引脚单独配置为输入口,不过这种配置是系统自动完成的。当该I/O口被设置为输入口使用时,该I/O控制模块将直接是三态缓冲区的控制端接地,是得该I/O对外呈高阻状态,这样该I/O引脚即可用作输入引脚使用。正确配置并锁定引脚后,一旦KEY1~~KEY8中有键输入,即可在检测到按键输入的情况下,继续判断其键值并作出相应的处理。

FPGA管脚多,不用动态扫描。但单片机需要给一个扫描

2、比较4×4键盘与PS/2键盘接口用FPGA实现方法的异同点。

答:4×4键盘仅仅是按行、列排列起来的矩阵开关,往往需要单独设计并制作,通用性不强。当需要较多的按键时,则会占用较多的 I/O端口,在软件上则要进行上电复位按键扫描及通信处理,而且还要加上按键的去抖动处理,增大了系统的软硬件开销。而 PS/2

键盘,内嵌自动去除按键抖动的设计,自动地识别键的按下与释放,软硬件可发简便,价格便宜,稳定可靠。

七、实验感想

在这一次实验中,通过第一次编写VHDL程序,也第一次接触Quartus软件以及相应的硬件设施,让我对大概了解quartus2这个软件的的一些实际操作,对EP1K30QC208的性能和特点有一些了解,并使得我对EDA这门课程产生浓厚的兴趣。

实验五--时序逻辑电路实验报告

实验五时序逻辑电路(计数器和寄存器)-实验报告 一、实验目的 1.掌握同步计数器设计方法与测试方法。 2.掌握常用中规模集成计数器的逻辑功能和使用方法。 二、实验设备 设备:THHD-2型数字电子计数实验箱、示波器、信号源 器件:74LS163、74LS00、74LS20等。 三、实验原理和实验电路 1.计数器 计数器不仅可用来计数,也可用于分频、定时和数字运算。在实际工程应用中,一般很少使用小规模的触发器组成计数器,而是直接选用中规模集成计数器。 2.(1) 四位二进制(十六进制)计数器74LS161(74LS163) 74LSl61是同步置数、异步清零的4位二进制加法计数器,其功能表见表5.1。 74LSl63是同步置数、同步清零的4位二进制加法计数器。除清零为同步外,其他功能与74LSl61相同。二者的外部引脚图也相同,如图5.1所示。 表5.1 74LSl61(74LS163)的功能表 清零预置使能时钟预置数据输入输出 工作模式R D LD EP ET CP A B C D Q A Q B Q C Q D 0 ××××()××××0 0 0 0 异步清零 1 0 ××D A D B D C D D D A D B D C D D同步置数 1 1 0 ××××××保持数据保持 1 1 ×0 ×××××保持数据保持 1 1 1 1 ××××计数加1计数3.集成计数器的应用——实现任意M进制计数器 一般情况任意M进制计数器的结构分为3类,第一类是由触发器构成的简单计数器。第二类是由集成二进制计数器构成计数器。第三类是由移位寄存器构成的移位寄存型计数器。第一类,可利用时序逻辑电路的设计方法步骤进行设计。第二类,当计数器的模M较小时用一片集成计数器即可以实现,当M较大时,可通过多片计数器级联实现。两种实现方法:反馈置数法和反馈清零法。第三类,是由移位寄存器构成的移位寄存型计数器。 4.实验电路: 十进制计数器 同步清零法 同步置数法

东南大学 数字电路实验 第4章_时序逻辑电路

东南大学电工电子实验中心 实验报告 课程名称:数字逻辑电路设计实践 第 4 次实验 实验名称:基本时序逻辑电路 院(系):信息科学与工程学院专业:信息工程姓名:学号: 实验室: 实验组别: 同组人员:无实验时间: 评定成绩:审阅教师:

时序逻辑电路 一、实验目的 1.掌握时序逻辑电路的一般设计过程; 2.掌握时序逻辑电路的时延分析方法,了解时序电路对时钟信号相关参数的基本要求; 3.掌握时序逻辑电路的基本调试方法; 4.熟练使用示波器和逻辑分析仪观察波形图,并会使用逻辑分析仪做状态分析。 二、实验原理 1.时序逻辑电路的特点(与组合电路的区别): ——具有记忆功能,任一时刻的输出信号不仅取决于当时的输出信号,而且还取决于电路原来的值,或者说还与以前的输入有关。 2.时序逻辑电路的基本单元——触发器(本实验中只用到D触发器) 触发器实现状态机(流水灯中用到) 3.时序电路中的时钟 1)同步和异步(一般都是同步,但实现一些任意模的计数器时要异步控制时钟端) 2)时钟产生电路(电容的充放电):在内容3中的32768Hz的方波信号需要自己通过 电路产生,就是用到此原理。 4.常用时序功能块 1)计数器(74161) a)任意进制的同步计数器:异步清零;同步置零;同步置数;级联 b)序列发生器 ——通过与组合逻辑电路配合实现(计数器不必考虑自启动) 2)移位寄存器(74194) a)计数器(一定注意能否自启动) b)序列发生器(还是要注意分析能否自启动) 三、实验内容 1.广告流水灯 a.实验要求 用触发器、组合函数器件和门电路设计一个广告流水灯,该流水等由8个LED组成,工作时始终为1暗7亮,且这一个暗灯循环右移。 ①写出设计过程,画出设计的逻辑电路图,按图搭接电路。 ②将单脉冲加到系统时钟端,静态验证实验电路。 ③将TTL连续脉冲信号加到系统时钟端,用示波器和逻辑分析仪观察并记录时钟脉冲 CLK、触发器的输出端Q2、Q1、Q0和8个LED上的波形。 b.实验数据 ①设计电路。 1)问题分析 流水灯的1暗7亮对应8个状态,故可采用3个触发器实现;而且题目要求输出8个信号控制8个灯的亮暗,故可以把3个触发器的输出加到3-8译码器的控制端,对应的8个译码器输出端信号控制8个灯的亮暗。

键盘与LED显示实验

实验三键盘及LED显示实验 一、实验内容 利用8255可编程并行接口控制键盘及显示器,当有按键按下时向单片机发送外部中断请求(INT0,INT1),单片机扫描键盘,并把按键输入的键码一位LED显示器显示出来。 二、实验目的及要求 (一)实验目的 通过该综合性实验,使学生掌握8255扩展键盘和显示器的接口方法及C51语言的编程方法,进一步掌握键盘扫描和LED显示器的工作原理;培养学生一定的动手能力。 (二)实验要求 1.学生在实验课前必须认真预习教科书与指导书中的相关内容,绘制流程图,编写C51语言源程序,为实验做好充分准备。 2.该实验要求学生综合利用前期课程及本门课程中所学的相关知识点,充分发挥自己的个性及创造力,独立操作完成实验内容,并写出实验报告。 三、实验条件及要求 计算机,C51语言编辑、调试仿真软件及实验箱50台套。 四、实验相关知识点 1.C51编程、调试。 2.扩展8255芯片的原理及应用。 3.键盘扫描原理及应用。 4.LED显示器原理及应用。

5.外部中断的应用。 五、实验说明 本实验仪提供了8位8段LED 显示器,学生可选用任一位LED 显示器,只要按地址输出相应的数据,就可以显示所需数码。 显示字形 1 2 3 4 5 6 7 8 9 A b C d E F 段 码 0xfc 0x60 0xda 0xf2 0x66 0xb6 0xbe 0xe0 0xfe 0xf6 0xee 0x3e 0x9c 0x7a 0x9e 0x8e 六、实验原理图 01e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1GND2DS29 LG4041AH 234 567 89A B C D E F e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1 GND2DS30 LG4041AH 1 2 3 4 5 6 7 8 JP4112345678 JP4712345678JP42 SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH A C B 12345678 JP92D 5.1K R162 5.1K R163VCC VCC D034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC7 10 RD 5WR 36A09A18RESET 35CS 6 U36 8255 D0D1D2D3D4D5D6D7WR RD RST A0A1PC5PC6PC7 PC2PC3PC4PC0PC1CS 12345678JP56 12345678JP53 12345678 JP52 PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7 (8255 PB7)(8255 PB6)(8255 PB5)(8255 PB4)(8255 PB3)(8255 PB2)(8255 PB1)(8255 PB0) (8255 PC7)(8255 PC6)(8255 PC5)(8255 PC4)(8255 PC3)(8255 PC2)(8255 PC1)(8255 PC0) (8255 PA0) (8255 PA1) (8255 PA2) (8255 PA3) (8255 PA4) (8255 PA5) (8255 PA6) (PA7) I N T 0(P 3.2) I N T 0(P 3.3) 七、连线说明

实验六 组合逻辑电路的设计与测试

实验六组合逻辑电路的设计与测试 1.实验目的 (1)掌握组合逻辑电路的设计方法; (2)熟悉基本门电路的使用方法。 (3)通过实验,论证所设计的组合逻辑电路的正确性。 2.实验设备与器材 1)数字逻辑电路实验箱,2)万用表,3)集成芯片74LS00二片。 3.预习要求 (1)熟悉组合逻辑电路的设计方法; (2)根据具体实验任务,进行实验电路的设计,写出设计过程,并根据给定的标准器件画出逻辑电路图,准备实验; (3)使用器件的各管脚排列及使用方法。 4.实验原理 数字电路中,就其结构和工作原理而言可分为两大类,即组合逻辑电路和时序逻辑电路。组合逻辑电路输出状态只决定于同一时刻的各输入状态的组合,与先前状态无关,它的基本单元一般是逻辑门;时序逻辑电路输出状态不仅与输入变量的状态有关,而且还与系统原先的状态有关,它的基本单元一般是触发器。 (1)组合电路是最常用的逻辑电路,可以用一些常用的门电路来组合完成具有其他功能的门电路。设计组合逻辑电路的一般步骤是: 1)根据逻辑要求,列出真值表; 2)从真值表中写出逻辑表达式; 3)化简逻辑表达式至最简,并选用适当的器件; 4)根据选用的器件,画出逻辑电路图。 逻辑化简是组合逻辑设计的关键步骤之一。为了使电路结构简单和使用器件较少,往往要求逻辑表达式尽可能化简。由于实际使用时要考虑电路的工作速度和稳定可靠等因素,在较复杂的电路中,还要求逻辑清晰易懂,所以最简设计不一定是最佳的。但一般来说,在保证速度、稳定可靠与逻辑清楚的前提下,尽量使用最少的器件,以降低成本。 (2)与非门74LS00芯片介绍 与非门74LS00一块芯片内含有4个互相独立的与非门,每个与非门有二个输入端。其逻辑表达式为Y=AB,逻辑符号及引脚排列如图6-1(a)、(b)所示。 (a)逻辑符号(b)引脚排列 图6-1 74LS20逻辑符号及引脚排列 (3)异或运算的逻辑功能 当某种逻辑关系满足:输入相同输出为“0”,输入相异输出为“1”,这种逻辑关系称为“异或”逻辑关系。 (4)半加器的逻辑功能 在加法运算中,只考虑两个加数本身相加,不考虑由低位来的进位,这种加法器称为半加器。 5.实验内容 (1)用1片74LS00与非门芯片设计实现两输入变量异或运算的异或门电路 要求:设计逻辑电路,按设计电路连接后,接通电源,验证运算逻辑。输入端接逻辑开关输出插口,以提供“0”与“1”电平信号,开关向上,输出逻辑“1”,向下为逻辑“0”;电路的输出端接由LED发光二极管组成的0-1指示器的显示插口,LED亮红色为逻辑“1”,亮绿色为逻辑“0”。接线后检查无误,通电,用万用表直流电压20V档测量输入、输出的对地电压,并观察输出的LED颜色,填入表6-1。

数字逻辑电路实验报告

数字逻辑电路 实验报告 指导老师: 班级: 学号: 姓名: 时间: 第一次试验一、实验名称:组合逻辑电路设计

二、试验目的: 1、掌握组合逻辑电路的功能测试。 2、验证半加器和全加器的逻辑功能。 3、、学会二进制数的运算规律。 三、试验所用的器件和组件: 二输入四“与非”门组件3片,型号74LS00 四输入二“与非”门组件1片,型号74LS20 二输入四“异或”门组件1片,型号74LS86 四、实验设计方案及逻辑图: 1、设计一位全加/全减法器,如图所示: 电路做加法还是做减法是由M决定的,当M=0时做加法运算,当M=1时做减法运算。当作为全加法器时输入信号A、B和Cin分别为加数、被加数和低位来的进位,S 为和数,Co为向上的进位;当作为全减法时输入信号A、B和Cin分别为被减数,减数和低位来的借位,S为差,Co为向上位的借位。 (1)输入/输出观察表如下: (2)求逻辑函数的最简表达式 函数S的卡诺图如下:函数Co的卡诺如下: 化简后函数S的最简表达式为: Co的最简表达式为:

(3)逻辑电路图如下所示: 2、舍入与检测电路的设计: 用所给定的集成电路组件设计一个多输出逻辑电路,该电路的输入为8421码,F1为“四舍五入”输出信号,F2为奇偶检测输出信号。当电路检测到输入的代码大于或等于5是,电路的输出F1=1;其他情况F1=0。当输入代码中含1的个数为奇数时,电路的输出F2=1,其他情况F2=0。该电路的框图如图所示: (1)输入/输出观察表如下: B8 B4 B2 B1 F2 F1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1

实验报告七-键盘扫描及显示实验

信息工程学院实验报告 课程名称:微机原理与接口技术 实验项目名称:键盘扫描及显示实验 实验时间: 班级: 姓名: 学号: 一、实 验 目 的 1. 掌握 8254 的工作方式及应用编程。 2. 掌握 8254 典型应用电路的接法。 二、实 验 设 备 了解键盘扫描及数码显示的基本原理,熟悉 8255 的编程。 三、实 验 原 理 将 8255 单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。键盘采用 4×4 键盘,每个数码管显示值可为 0~F 共 16 个数。实验具体内容如下:将键盘进行编号,记作 0~F ,当按下其中一个按键时,将该按键对应的编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近 6 次按下的按键编号。 键盘及数码管显示单元电路图如图 7-1 和 7-2 所示。8255 键盘及显示实验参考接线图如图 7-3 所示。 图 7-1 键盘及数码管显示单元 4×4 键盘矩阵电路图 成 绩: 指导老师(签名):

图 7-2 键盘及数码管显示单元 6 组数码管电路图 图 7-3 8255 键盘扫描及数码管显示实验线路图 四、实验内容与步骤 1. 实验接线图如图 7-3 所示,按图连接实验线路图。

图 7-4 8255 键盘扫描及数码管显示实验实物连接图 2.运行 Tdpit 集成操作软件,根据实验内容,编写实验程序,编译、链接。 图 7-5 8255 键盘扫描及数码管显示实验程序编辑界面 3. 运行程序,按下按键,观察数码管的显示,验证程序功能。 五、实验结果及分析: 1. 运行程序,按下按键,观察数码管的显示。

时序逻辑电路实验报告

时序逻辑电路实验报告 一、实验目的 1. 加深理解时序逻辑电路的工作原理。 2. 掌握时序逻辑电路的设计方法。 3. 掌握时序逻辑电路的功能测试方法。 二、实验环境 1、PC机 2、Multisim软件工具 三、实验任务及要求 1、设计要求: 要求设计一个计数器完成1→3→5→7→9→0→2→4→6→8→1→…的循环计数(设初值为1),并用一个数码管显示计数值(时钟脉冲频率为约1Hz)。 2、实验内容: (1)按要求完成上述电路的功能。 (2)验证其功能是否正确。 四、实验设计说明(简述所用器件的逻辑功能,详细说明电路的设计思路和过程) 首先根据题目要求(即要完成1到9的奇数循环然后再0到8的偶数循环)画出真值表,如下图。画出真值表后,根据真值表画出各次态对应的卡诺图,如下图。然后通过化简卡诺图,得到对应的次态的状态方 程;

然后开始选择想要用于实现的该电路的器件,由于老师上课时所用的例题是用jk触发器完成的,我觉得蛮不错的,也就选择了同款的jk触发器;选好器件之后,根据状态方程列出jk触发器的驱动方程。然后根据驱动方程连接好线路图,为了连接方便,我也在纸上预先画好了连接图,以方便照着连接。接下来的工作就是在multisim上根据画好的草图连接器件了,然后再接上需要的显示电路,即可完成。

五、实验电路(画出完整的逻辑电路图和器件接线图)

六、总结调试过程所遇到的问题及解决方法,实验体会 1、设计过程中遇到过哪些问题?是如何解决的? 在设计过程中最大的问题还是忘记设计的步骤吧,因为老师是提前将实验内容已经例题讲解给我们听的,而我开始实验与上课的时间相隔了不短的时间,导致上课记下来的设计步骤忘得七七八八,不过好在是在腾讯课堂上得网课,有回放,看着回放跟着老师的思路走一遍后,问题也就迎刃而解了,后面的设计也就是将思路步骤走一遍而已,没再遇到什么困难。 2、通过此次时序逻辑电路实验,你对时序逻辑电路的设计是否有更清楚的认识?若没有,请分析原因;若有,请说明在哪些方面更加清楚。 通过这次时序逻辑电路实验,我最大的感触就是实验设计的思路与步骤一定要清晰,思路与步骤的清晰与否真的是造成实验设计是否困难的最重要的因素。清晰的话,做起实验来如同顺水推舟,毫不费力,不清晰的话则如入泥潭,寸步难行。

组合逻辑电路实验

实验一基本门电路的功能和特性及组合逻辑电路实验(2学时) 实验目的及要求:掌握常用的集成门电路的逻辑功能与特性;掌握各种门电路的逻辑符号;了解集成电路的外引线排列及其使用方法;学习组合逻辑电路的设计及测试方法。 实验题目:部分TTL门电路逻辑功能验证及组合逻辑电路设计之全加器或全减器。 实验二数值比较器、数据选择器(3学时) 实验目的及要求:掌握数值比较器和数据选择器的逻辑功能;学习组合逻辑电路的设计及测试方法。用7486和7400、7404搭出一位数值比较器,画出其设计逻辑电路图,并验证它的运算;用74153选择器实现多数据表决器,要求3个输入中有2个或3个为1时,输出Y为高电平,否则Y为低电平。画出电路图并简述实现原理。用7400、7404、7432实现该多数表决器。 实验题目:组合逻辑电路设计之数值比较器和数据选择器 实验三计数器的应用(3学时) 实验目的及要求:掌握集成二进制同步计数器74161的逻辑功能;掌握任意进制计数器的构成方法;学习时序逻辑电路的设计及测试方法。用74161搭建一个60进制计数器电路,并将结果输出到7段数码管显示出来,画出其设计逻辑电路图并验证它的功能。 实验题目:时序逻辑电路设计之计数器的应用 74LS00: QUAD 2-INPUT NAND GATE

74LS04: HEX INVERTER 74LS32:Quad 2-Input OR Gates

74LS74: Dual Positive-Edge-Triggered D Flip-Flops with Preset, Clear and Complementary Outputs 74LS153: Dual 4-Input Multiplexer with common select inputs and individual enable inputs 74LS161: Synchronous 4-Bit Binary Counters

矩阵键盘扫描实验

实验矩阵键盘扫描实验 一、实验要求 利用4X4 16位键盘和一个7段LED构成简单的输入显示系统,实现键盘输入和LED 显示实验。 二、实验目的 1、理解矩阵键盘扫描的原理; 2、掌握矩阵键盘与51单片机接口的编程方法。 三、实验电路及连线 Proteus实验电路

1、主要知识点概述: 本实验阐述了键盘扫描原理,过程如下:首先扫描键盘,判断是否有键按下,再确定是哪一个键,计算键值,输出显示。 2、效果说明: 以数码管显示键盘的作用。点击相应按键显示相应的键值。 五、实验流程图

1、Proteus仿真 a、在Proteus中搭建和认识电路; b、建立实验程序并编译,加载hex文件,仿真; c、如不能正常工作,打开调试窗口进行调试 参考程序: ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV DPTR,#TABLE ;将表头放入DPTR LCALL KEY ;调用键盘扫描程序 MOVC A,@A+DPTR ;查表后将键值送入ACC MOV P2,A ;将ACC值送入P0口 LJMP MAIN ;返回反复循环显示 KEY: LCALL KS ;调用检测按键子程序 JNZ K1 ;有键按下继续 LCALL DELAY2 ;无键按调用延时去抖 AJMP KEY ;返回继续检测按键 K1: LCALL DELAY2 LCALL DELAY2 ;有键按下延时去抖动 LCALL KS ;再调用检测按键程序 JNZ K2 ;确认有按下进行下一步 AJMP KEY ;无键按下返回继续检测 K2: MOV R2,#0EFH ;将扫描值送入R2暂存MOV R4,#00H ;将第一列值送入R4暂存 K3: MOV P1,R2 ;将R2的值送入P1口 L6: JB P1.0,L1 ;P1.0等于1跳转到L1 MOV A,#00H ;将第一行值送入ACC AJMP LK ;跳转到键值处理程序 L1: JB P1.1,L2 ;P1.1等于1跳转到L2 MOV A,#04H ;将第二行的行值送入ACC AJMP LK ;跳转到键值理程序进行键值处理 L2: JB P1.2,L3 ;P1.2等于1跳转到L3

实验三时序逻辑电路

实验三时序逻辑电路 学习目标: 1、掌握时序逻辑电路的一般设计过程 2、掌握时序逻辑电路的时延分析方法,了解时序电路对时钟信号相关参数的基本要求 3、掌握时序逻辑电路的基本调试方法 4、熟练使用示波器和逻辑分析仪观察波形图 实验内容: 1、广告流水灯(第 9 周课内验收)用触发器、组合函数器件和门电路设计一个广告流水灯,该流水灯由 8 个 LED 组成,工作时始终为 1 暗 7 亮,且这一个暗灯循环右移。 (1) 写出设计过程,画出设计的逻辑电路图,按图搭接电路 (2) 将单脉冲加到系统时钟端,静态验证实验电路 (3) 将 TTL 连续脉冲信号加到系统时钟端,用示波器观察并记录时钟脉冲 CP、触发器的输出端 Q2、Q1、 Q0 和 8 个 LED 上的波形。 2、序列发生器(第 10 周课内实物验收计数器方案)分别用 MSI 计数器和移位寄存器设计一个具有自启动功能的 01011 序列信号发生器 (1) 写出设计过程,画出电路逻辑图 (2) 搭接电路,并用单脉冲静态验证实验结果 (3) 加入 TTL 连续脉冲,用示波器观察观察并记录时钟脉冲 CLK、序列输出端的波形。 3、4 位并行输入-串行输出曼切斯特编码电路(第10周课内验收,基础要求占70%,扩展要求占30%) 在电信与数据存储中, 曼彻斯特编码(Manchester coding),又称自同步码、相位编码(phase encoding,PE),它能够用信号的变化来保持发送设备和接收设备之间的同步,在以太网中,被物理层使用来编码一个同步位流的时钟和数据。曼彻斯特编码用电压的变化来分辨 0 和 1,从高电平到低电平的跳变代表 0,而从低电平到高电平的跳变代表 1。信号的保持不会超过一个比特位的时间间隔。即使是 0 或 1 的序列,信号也将在每个时间间隔的中间发生跳变。这种跳变将允许接收设备的时钟与发送设备的时钟保持一致,图 3.1 为曼切斯特编码的例子。 设计一个电路,它能自动加载 4 位并行数据,并将这4位数据逐个串行输出(高位在前),每个串行输出位都被编码成曼切斯特码,当 4 位数据全部传输完成后,重新加载新数据,继续传输,如图 3.2 所示。

实验一组合逻辑电路设计

实验一 组合逻辑电路的设计 一、实验目的: 1、 掌握组合逻辑电路的设计方法。 2、 掌握组合逻辑电路的静态测试方法。 3、 加深FPGA 设计的过程,并比较原理图输入和文本输入的优劣。 4、 理解“毛刺”产生的原因及如何消除其影响。 5、 理解组合逻辑电路的特点。 二、实验的硬件要求: 1、 EDA/SOPC 实验箱。 2、 计算机。 三、实验原理 1、组合逻辑电路的定义 数字逻辑电路可分为两类:组合逻辑电路和时序逻辑电路。组合逻辑电路中不包含记忆单元(触发器、锁存器等),主要由逻辑门电路构成,电路在任何时刻的输出只和当前时刻的输入有关,而与以前的输入无关。时序电路则是指包含了记忆单元的逻辑电路,其输出不仅跟当前电路的输入有关,还和输入信号作用前电路的状态有关。 通常组合逻辑电路可以用图1.1所示结构来描述。其中,X0、X1、…、Xn 为输入信号, L0、L1、…、Lm 为输出信号。输入和输出之间的逻辑函数关系可用式1.1表示: 2、组合逻辑电路的设计方法 组合逻辑电路的设计任务是根据给定的逻辑功能,求出可实现该逻辑功能的最合理组 合电路。理解组合逻辑电路的设计概念应该分两个层次:(1)设计的电路在功能上是完整的,能够满足所有设计要求;(2)考虑到成本和设计复杂度,设计的电路应该是最简单的,设计最优化是设计人员必须努力达到的目标。 在设计组合逻辑电路时,首先需要对实际问题进行逻辑抽象,列出真值表,建立起逻辑模型;然后利用代数法或卡诺图法简化逻辑函数,找到最简或最合理的函数表达式;根据简化的逻辑函数画出逻辑图,并验证电路的功能完整性。设计过程中还应该考虑到一些实际的工程问题,如被选门电路的驱动能力、扇出系数是否足够,信号传递延时是否合乎要求等。组合电路的基本设计步骤可用图1.2来表示。 3、组合逻辑电路的特点及设计时的注意事项 ①组合逻辑电路的输出具有立即性,即输入发生变化时,输出立即变化。(实际电路中 图 1.1 组合逻辑电路框图 L0=F0(X0,X1,···Xn) · · · Lm=F0(X0,X1,···Xn) (1.1) 图 1.2 组合电路设计步骤示意图图

实验五时序逻辑电路实验报告

实验五时序逻辑电路(计数器和寄存器)-实验报告一、实验目的 1掌握同步计数器设计方法与测试方法。 2 ?掌握常用中规模集成计数器的逻辑功能和使用方法。 二、实验设备 设备:THHD-2型数字电子计数实验箱、示波器、信号源 器件:74LS163、74LS00、74LS20 等。 三、实验原理和实验电路 1计数器 计数器不仅可用来计数,也可用于分频、定时和数字运算。在实际工程应用中,一般很少使用小规模的触发器组成计数器,而是直接选用中规模集成计数器。 2. (1)四位二进制(十六进制)计数器74LS161 (74LS163) 74LS161是同步置数、异步清零的4位二进制加法计数器,其功能表见表。 74LS163是同步置数、同步清零的4位二进制加法计数器。除清零为同步外,其他功能与74LS161相同。二者的外部引脚图也相同,如图所示。 3.集成计数器的应用一一实现任意M进制计数器

Eft CR IK rh th Ih ET 7-I1A C1M /( 制扭环计数 同步清零法器 同步置数法 般情况任意M 进制计数器的结构分为 3类,第一类是由触发器构成的简单计数器。 第 二类是 由集成二进制计数器构成计数器。第三类是由移位寄存器构成的移位寄存型计数器。 第一类,可利用时序逻辑电路的设计方法步骤进行设计。 第二类,当计数器的模 M 较小时用 一片集成计数器即可以实现,当 M 较大时,可通过多片计数器级联实现。两种实现方法:反 馈置数法和反馈清零法。第三类,是由移位寄存器构成的移位寄存型计数器。 4?实验电路: 十进制计数器 1

图74LS161 (74LS163)外部引脚图 四、实验内容及步骤 1 .集成计数器实验 (1)按电路原理图使用中规模集成计数器74LS163和与非门74LS00,连接成一个同步置数或同步清零十进制计数器,并将输出连接至数码管或发光二极管。然后使用单次脉冲作为触发输入,观察数码管或发光二极管的变化,记录得到电路计数过程和状态的转换规律。 (2)根据电路图,首先用D触发器74LS7474构成一个不能自启的六进制扭环形计数器,同样将输出连接至数码管或发光二极管。然后使用单次脉冲作为触发输入,观察数码管或发光二 极管的变化,记录得到电路计数过程和状态的转换规律。注意观察电路是否能自启,若不能自启,则将电路置位有效状态。接下来再用D触发器74LS7474构成一个能自启的六进制扭环 形计数器,重复上述操作。 2?分频实验 依据实验原理图用74LS163及74LS00组成一个具有方波输出的六分频电路。选择适当时钟输入方式及频率(CP接连续波脉冲),用双踪示波器观察并记录时钟与分频输出信号的时序波形。 五、实验结果及数据分析 1 .集成计数实验同步清零和同步置数的十进制加一计数器状态转换过程分别如下所示: 0000 : 0001 : 0010 : 0011 ; 0100 爲00*卄庇爲爲卄yh 六进制扭环形计数器的状态转换过程如下:

组合逻辑电路设计实验报告

组合逻辑电路设计实验报告 1.实验题目 组合电路逻辑设计一: ①用卡诺图设计8421码转换为格雷码的转换电路。 ②用74LS197产生连续的8421码,并接入转换电路。 ③记录输入输出所有信号的波形。 组合电路逻辑设计二: ①用卡诺图设计BCD码转换为显示七段码的转换电路。 ②用74LS197产生连续的8421码,并接入转换电路。 ③把转换后的七段码送入共阴极数码管,记录显示的效果。 2.实验目的 (1)学习熟练运用卡诺图由真值表化简得出表达式 (2)熟悉了解74LS197元件的性质及其使用 3.程序设计 格雷码转化: 真值表如下:

卡诺图: 1 010100D D D D D D G ⊕=+= 2 121211D D D D D D G ⊕=+=

3232322D D D D D D G ⊕=+= 33D G = 电路原理图如下: 七段码显示: 真值表如下: 卡诺图:

2031020231a D D D D D D D D D D S ⊕++=+++= 10210102b D D D D D D D D S ⊕+=++= 201c D D D S ++= 2020101213d D D D D D D D D D D S ++++= 2001e D D D D S +=

2021013f D D D D D D D S +++= 2101213g D D D D D D D S +++= 01213g D D D D D S +⊕+= 电路原理图如下:

4.程序运行与测试 格雷码转化: 逻辑分析仪显示波形:

实验三 键盘扫描控制

实验三4*4键盘扫描显示控制 一、实验目的 实现一4×4键盘的接口,并在两个数码管上显示键盘所在的行与列。即将8255单元与键盘及数码管显示单元连接,编写实验程序扫描键盘输入,并将扫描结果送数码显示,键盘采用4×4键盘,每个数码管值可以为0到F,16个数。将键盘进行编号记作0—F当按下其中一个按键时将该按键对应的编号在一个数码管上显示出来,当按下下一个按键时便将这个按键的编号在下一个数码管上显示出来,且数码管上可以显示最近6次按下按键的编号。 二、实验要求 1、接口电路设计:根据所选题目和所用的接口电路芯片设计出完整的接口电路,并进行电路连接和调试。 2、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明。 三、实验电路

四、实验原理说明 图2 数码管引脚图 图1为AT89C51引脚图,说明如下: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口同时为闪烁编程和编程校验接收一些控制信号。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址

键盘扫描显示实验原理及分析报告

键盘扫描显示实验原理及分析报告 一、实验目的-------------------------------------------------------------1 二、实验要求-------------------------------------------------------------1 三、实验器材-------------------------------------------------------------1 四、实验电路-------------------------------------------------------------2 五、实验说明-------------------------------------------------------------2 六、实验框图-------------------------------------------------------------2 七、实验程序-------------------------------------------------------------3 八、键盘及LED显示电路---------------------------------------------14 九、心得体会------------------------------------------------------------- 15 十、参考文献--------------------------------------------------------------15

数电实验报告 实验二 组合逻辑电路的设计

实验二组合逻辑电路的设计 一、实验目的 1.掌握组合逻辑电路的设计方法及功能测试方法。 2.熟悉组合电路的特点。 二、实验仪器及材料 a) TDS-4数电实验箱、双踪示波器、数字万用表。 b) 参考元件:74LS86、74LS00。 三、预习要求及思考题 1.预习要求: 1)所用中规模集成组件的功能、外部引线排列及使用方法。 2) 组合逻辑电路的功能特点和结构特点. 3) 中规模集成组件一般分析及设计方法. 4)用multisim软件对实验进行仿真并分析实验是否成功。 2.思考题 在进行组合逻辑电路设计时,什么是最佳设计方案? 四、实验原理 1.本实验所用到的集成电路的引脚功能图见附录 2.用集成电路进行组合逻辑电路设计的一般步骤是: 1)根据设计要求,定义输入逻辑变量和输出逻辑变量,然后列出真值表; 2)利用卡络图或公式法得出最简逻辑表达式,并根据设计要求所指定的门电路或选定的门电路,将最简逻辑表达式变换为与所指定门电路相应的形式; 3)画出逻辑图; 4)用逻辑门或组件构成实际电路,最后测试验证其逻辑功能。 五、实验内容 1.用四2输入异或门(74LS86)和四2输入与非门(74LS00)设计一个一位全加器。 1)列出真值表,如下表2-1。其中A i、B i、C i分别为一个加数、另一个加数、低位向本位的进位;S i、C i+1分别为本位和、本位向高位的进位。 2)由表2-1全加器真值表写出函数表达式。

3)将上面两逻辑表达式转换为能用四2输入异或门(74LS86)和四2输入与非门(74LS00)实现的表达式。 4)画出逻辑电路图如图2-1,并在图中标明芯片引脚号。按图选择需要的集成块及门电路连线,将A i、B i、C i接逻辑开关,输出Si、Ci+1接发光二极管。改变输入信 号的状态验证真值表。 2.在一个射击游戏中,每人可打三枪,一枪打鸟(A),一枪打鸡(B),一枪打兔子(C)。 规则是:打中两枪并且其中有一枪必须是打中鸟者得奖(Z)。试用与非门设计判断得奖的电路。(请按照设计步骤独立完成之) 五、实验报告要求: 1.画出实验电路连线示意图,整理实验数据,分析实验结果与理论值是否相等。 2.设计判断得奖电路时需写出真值表及得到相应输出表达式以及逻辑电路图。 3.总结中规模集成电路的使用方法及功能。

实验二 时序逻辑电路的设计[1]

实验二 时序逻辑电路的设计 一、实验目的: 1、 掌握时序逻辑电路的分析方法。 2、 掌握VHDL 设计常用时序逻辑电路的方法。 3、 掌握时序逻辑电路的测试方法。 4、 掌握层次电路设计方法。 5、 理解时序逻辑电路的特点。 二、实验的硬件要求: 1、 EDA/SOPC 实验箱。 2、 计算机。 三、实验原理 1、时序逻辑电路的定义 数字逻辑电路可分为两类:组合逻辑电路和时序逻辑电路。组合逻辑电路中不包含记忆单元(触发器、锁存器等),主要由逻辑门电路构成,电路在任何时刻的输出只和当前时刻的输入有关,而与以前的输入无关。时序电路则是指包含了记忆单元的逻辑电路,其输出不仅跟当前电路的输入有关,还和输入信号作用前电路的状态有关。 2、同步时序逻辑电路的设计方法 同步时序逻辑电路的设计是分析的逆过程,其任务是根据实际逻辑问题的要求,设计出能实现给定逻辑功能的电路。同步时序电路的设计过程: (1)根据给定的逻辑功能建立原始状态图和原始状态表。 ①明确电路的输入条件和相应的输出要求,分别确定输入变量和输出变量的数目和符号; ②找出所有可能的状态和状态转换之间的关系; ③根据原始状态图建立原始状态表; (2)状态化简---求出最简状态图。 合并等价状态,消去多余状态的过程称为状态化简。 等价状态:在相同的输入下有相同的输出,并转换到同一个次态去的两个状态称为等价状态。 (3)状态编码(状态分配)。 给每个状态赋以二进制代码的过程。 根据状态数确定触发器的个数,n n M 221-≤∠(M 为状态数;n 为触发器的个数)。 (4)选择触发器的类型。 (5)求出电路的激励方程和输出方程。 (6)画出逻辑图并检查自启动能力。 3、时序逻辑电路的特点及设计时的注意事项 ①时序逻辑电路与组合逻辑电路相比,输出会延时一个时钟周期。 ②时序逻辑电路一般容易消除“毛刺”。 ③用VHDL 描述时序逻辑电路时,一般只需将时钟信号和异步控制(如异步复位)信号作为敏感信号。

实验三组合逻辑电路

实验三组合逻辑电路(常用门电路、译码器和数据选择器) 一、实验目的 1.掌握组合逻辑电路的设计方法 2.了解组合逻辑电路的冒险现象与消除方法 3.熟悉常用门电路逻辑器件的使用方法 4.熟悉用门电路、74LS138和74LS151进行综合性设计的方法 二、实验原理及实验资料 (一)组合电路的一般设计方法 1.设计步骤 根据给出的实际逻辑问题,求出实现这一逻辑功能的最简单逻辑电路,这就是设计组合逻辑电路时要完成的工作。组合逻辑电路的一般设计步骤如图所示。 图组合逻辑电路的一般设计步骤 设计组合逻辑电路时,通常先将实际问题进行逻辑抽象,然后根据具体的设计任务要求列出真值表,再根据器件的类型将函数式进行化简或变换,最后画出逻辑电路图。 2. 组合电路的竞争与冒险(旧实验指导书P17~20) (二)常用组合逻辑器件 1.四二输入与非门74LS00 74LS00为双列直插14脚塑料封装,外部引脚排列和内部逻辑结构如图所示。它共有四个独立的二输入“与非”门,每个门的构造和逻辑功能相同。 图 74LS00引脚排列及内部逻辑结构 2.二四输入与非门74LS20

74LS20为双列直插14脚塑料封装,外部引脚排列和内部逻辑结构如图所示。它共有两个独立的四输入“与非”门,每个门的构造和逻辑功能相同。 图 74LS20引脚排列及内部逻辑结构 3.四二输入异或门74LS86 74LS86为双列直插14脚塑料封装,外部引脚排列和内部逻辑结构如图所示。它共有四个独立的二输入“异或”门,每个门的构造和逻辑功能相同。 图 74LS86引脚排列及内部逻辑结构 3.3线-8线译码器74LS138 74LS138是集成3线-8线译码器,其功能表见表。它的输出表达式为 i A B i Y G G G m 122(i =0,1,…7;m i 是最小项),与基本门电路配合使用,它能够实现任何三变量的逻辑函数。74LS138为双列直插16脚塑料封装,外部引脚排列如图所示。

[VIP专享]EDA 实验2简单分频时序逻辑电路设计 实验报告

时序电路设计 实验目的: 1.掌握条件语句在简单时序模块设计中的使用。 2.学习在Verilog模块中应用计数器。 实验环境: Windows 7、MAX+PlusⅡ10等。 实验内容: 1.模为60的8421BCD码加法计数器的文本设计及仿真。 2.BCD码—七段数码管显示译码器的文本设计及仿真。 3.用For语句设计和仿真七人投票表决器。 4.1/20分频器的文本设计及仿真。 实验过程: 一、模为60的8421BCD码加法计数器的文本设计及仿真: (1)新建文本:选择菜单File下的New,出现如图5.1所示的对话框,在框中选中“Text Editor file”,按“OK”按钮,即选中了文本编辑方式。 图5.1 新建文本 (2)另存为Verilog编辑文件,命名为“count60.v”如图5.2所示。 (3)在编辑窗口中输入程序,如图5.3所示。

图5.2 另存为.V编辑文件图5.4 设置当前仿真的文本设计 图5.3 模为60的8421BCD码加法计数器的设计代码

(4)设置当前文本:在MAX+PLUS II中,在编译一个项目前,必须确定一个设计文件作为当前项目。按下列步骤确定项目名:在File菜单中选择Project 中的Name选项,将出现Project Name 对话框:在Files 框内,选择当前的设计文件。选择“OK”。如图5.4所示。 (5)打开编译器窗口:在MAX—plusⅡ菜单内选择Compiler 项,即出现如图5.5的编译器窗口。 图5.5 编译器窗口 选择Start即可开始编译,MAX+PLUS II编译器将检查项目是否有错,并对项目进行逻辑综合,然后配置到一个Altera 器件中,同时将产生报告文件、编程文件和用于时间仿真用的输出文件。 (6)建立波形编辑文件:选择菜单File下的New选项,在出现的New对话框中选择“Waveform Editor File”,单击OK后将出现波形编辑器子窗口。 (7)仿真节点插入:选择菜单Node下的Enter Nodes from SNF选项,出现如图5.6所示的选择信号结点对话框。按右上侧的“List”按钮,在左边的列表框选择需要的信号结点,然后按中间的“=>”按钮,单击“OK”,选中的信号将出现在波形编辑器中。 图5.6 仿真节点插入

相关文档
相关文档 最新文档