实验三-VHDL时序逻辑电路设计 下载本文

内容发布更新时间 : 2024/10/24 15:20:15星期一 下面是文章的全部内容请认真阅读。

精品文档

实验三 VHDL 时序逻辑电路设计

一、实验目的

1. 熟悉用VHDL语言设计时序逻辑电路的方法 2. 熟悉用Quartus文本输入法进行电路设计 二、实验所用仪器元件及用途

1. 计算机:装有Quartus软件,为VHDL语言提供操作场所。

2. 直流稳压电源:通过USB接口实现,为实验开发板提供稳定电源。

3. 数字系统与逻辑设计实验开发板:使试验结果下载到开发板上,实现整个实验的最终结

果。

三、实验内容

1. 用VHDL语言设计实现一个8421码十进制计数器。

(1) 实验内容及要求:在Quartus平台上设计程序和仿真题目要求,并下载到实验板上

验证试验结果。

(2) 试验结果:VHDL代码和仿真结果。

2. 用VHDL语言设计实现一个分频系数为8,分频输出信号占空比为50%的分频器。 (1) 实验内容及要求:在Quartus平台上设计程序和仿真题目要求。 (2) 试验结果:VHDL代码和仿真结果。

3. 用VHDL语言设计实现一个控制8个发光二极管亮灭的电路。

(1) 实验内容及要求:在Quartus平台上设计程序和仿真题目要求,并下载到实验板上

验证试验结果。

a. 单点移动模式:一个点在8个发光二极管上来回的亮

b. 幕布式:从中间两个点,同时向两边依次点亮直至全亮,然后再向中间点灭,依次

往复

c. 通过拨码开关或按键控制两种模式的转换 (2) 试验结果:VHDL代码和仿真结果。 四、实验设计思路及过程

1.8421码十进制计数器状态转移表

a b c d A B C D 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 左图为8421码十进制计数0 0 1 0 0 0 1 1 器的状态转移表,abcd为初0 0 1 1 0 1 0 0 状态,ABCD为下一状态,每0 1 0 0 0 1 0 1 当有“1”出现时,相应的0 1 0 1 0 1 1 0 管脚就亮灯,从而从0000

0 1 1 0 0 1 1 1 到1001的灯依次出现。

0 1 1 1 1 0 0 0

1 0 0 0 1 0 0 1

1 0 0 1 0 0 0 0

VHDL代码如下: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

。 1欢迎下载

精品文档

ENTITY count12 IS PORT(

clk,clear:IN STD_LOGIC;

q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END count12;

ARCHITECTURE a OF count12 IS

SIGNAL q_temp:ATD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

PROCESS(clk) BEGIN

IF(clk'event and clk='1') THEN IF clear='0' THEN q_temp<=\ ELSIF q_temp=\ q_temp<=\ ELSE

q_temp<=q_temp+1; END IF; END IF; END PROCESS; q<=q_temp; END a;

2.分频系数为8,输出占空比为50%的分频器的设计 a 0 0 0 0 1 1 1 1 b 0 0 1 1 0 0 1 1 c 0 1 0 1 0 1 0 1 A 0 0 0 1 1 1 1 0 B 0 1 1 0 0 1 1 0 C 1 0 1 0 1 0 1 0 F 0 0 0 0 1 1 1 1

左图为八分频器(占空比50%) 的状态转移图,其中abc为原状态,ABC为下一状态。当输出F为“1”时,输出波形。

VHDL代码为:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY div_8 IS PORT(

clk:IN STD_LOGIC;

。 2欢迎下载

精品文档

clear:IN STD_LOGIC; clk_out:OUT STD_LOGIC); END div_8;

ARCHITECTURE a OF div_8 IS

SIGNAL tmp:INTEGER RANGE 0 TO 7; BEGIN

p1:PROCESS(clear,clk) BEGIN

IF clear='0'THEN tmp<=0;

ELSIF clk'event AND clk='1' THEN IF tmp=7 THEN tmp<=0; ELSE

tmp<=tmp+1; END IF;

IF tmp<=4 THEN clk_out<='0'; ELSE

clk_out<='1'; END IF; END IF; END PROCESS p1; END a;

五、实验结果

一、.8421码十进制计数器

其中,end time 设为 50us, clear和clk的period 分别为1和1us. 对结果进行分析:

由仿真波形可以看出,当输入在0000到1001时,输出对应亮灯随着1的出现依次变化,每拨动一次时钟clk的锁定管脚,就由一个状态转换到下一状态,亮灯也进入下一状态。

二、八分频器(50%占空比)

。 3欢迎下载