数电实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字电路与逻辑设计实验报告

学院:电子工程学院

班级:2013211207 学号:2013210999

姓名:

一.实验名称和实验任务要求

实验1

(1)实验名称:半加器

任务要求:用逻辑门设计实现一个半加器,仿真验证其功能,

并生成新的半加器图形模块单元。

(2)实验名称:全加器

任务要求:用实验(1)生成的半加器模块和逻辑门设计实现一

个全加器,仿真验证其功能。

(3)实验名称:3线-8线译码器

任务要求:用3线-8线译码器(74LS138)和逻辑门设计实现函数F=CBA+ CBA+ CBA+ CBA,仿真验证其功能。

实验2

(1)实验名称:数码管译码器

任务要求:用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,

发光二极管显示输出信号。

(2)实验名称:8421码转化成余3码

任务要求:用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能,下载到实验板测试。要求用按键设定输入信号,

7段数码管显示输出信号。

(3)实验名称:奇校验器

任务要求:用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个‘1’时,输出为‘1’,否则输出为‘0’,仿真验证其功能,并下载到实验

板测试。要求用拨码开关设定输入信号,发光二极管显示输出信

号。

实验3

(1)实验名称:8421十进制计数器

任务要求:用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证其功能。并下载到实验板测试。要求用按键设定输入信

号,发光二极管显示输出信号。

(2) 实验名称:分频器

任务要求:用VHDL语言设计实现一个分频系数为12,分频输出信号占空比为50%的分频器,要求在Quartus Ⅱ平台上设计程序并仿真

验证设计。

(3) 实验名称:组合数码管译码器

任务要求:将(1)、(2)和数码管译码器3个电路进行链接,并下载到实验板来显示计数结果。

实验4

实验名称:数码管动态扫描控制器

任务要求:(1)用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0、1、2、3、4、5这6个不同的数字图形到6个数码管上,仿

真验证其功能,并下载到实验板测试。

(2)用VHDL语言设计实现六个数码管滚动显示电路。

循环左滚动,始终点亮六个数码管,左进右出。状态为:012345

→123450→234501→345012→450123→501234→012345。

向左滚动,用全灭的数码管填充右边,直至全部变灭,然后再依次

从右边一个一个地点亮,状态为:012345→12345X→2345XX→

345XXX→45XXXX→5XXXXX→XXXXXX→XXXXX0→XXXX01→

XXX012→XX0123→X01234→012345,其中‘X’表示数码管不显

示。

二.实验三(3)和实验四模块端口及连接图

1.实验三(3)模块端口及连接图

端口列表

其中,clear为复位清零端(低电平有效),clk为时钟输入端,c为控制6个数码管亮灭信号(低电平有效),B为控制数码管7个管脚亮灭信号

连接图

2.实验四模块端口及连接图

端口列表

其中,clear为复位清零端(低电平有效),clk为时钟输入端,c为控制6个数码管亮灭信号(低电平有效),d为控制数码管7个管脚亮灭信号

连接图

三.实验一(1),实验三(3)和实验四的原理图或VHDL代码

1.实验一(1)全加器的的原理图

2.实验三(3)组合数码管译码器的VHDL代码

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY lj IS

PORT(

clk,clk1: IN STD_LOGIC;

clear2,clear1: IN STD_LOGIC;

Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

b:OUT STD_LOGIC_VECTOR(6 downto 0));

END lj;

ARCHITECTURE a OF lj IS

SIGNAL tmp: INTEGER RANGE 0 TO 5;

SIGNAL clktmp:STD_LOGIC;

BEGIN

PROCESS(clear1,clk)

BEGIN

IF clear1='0'THEN

tmp<=0;

ELSIF(clk'event AND clk='1')THEN

IF tmp=5 THEN

tmp<=0; clktmp<=NOT clktmp;

ELSE

tmp<=tmp+1;

END IF;

END IF;

END PROCESS;

SIGNAL Q_TEMP:STD_LOGIC_VECTOR(3 DOWNTO 0); PROCESS(CLKtmp)

BEGIN

IF CLEAR2='0' THEN

Q_TEMP<="0000";

ELSIF(CLKtmp'EVENT AND CLKtmp='1')THEN

IF Q_TEMP="1001" THEN

Q_TEMP<="0000";

ELSE

Q_TEMP<=Q_TEMP+1;

END IF;

END IF;

END PROCESS;

Q<=Q_TEMP;

PROCESS (a)

BEGIN

CASE q IS

WHEN"0000" => b<="1111110";

WHEN"0001" => b<="0110000";

WHEN"0010" => b<="1101101";

相关文档
最新文档