数电实验三基于Quartus的硬件描述语言电路设计 联系客服

发布时间 : 星期一 文章数电实验三基于Quartus的硬件描述语言电路设计更新完毕开始阅读c8fc8d2317fc700abb68a98271fe910ef12daeb9

数电实验三基于Quartus的硬件描述语言电路设计

一实验目的 (1) 了解QuartusII的硬件描述语言电路。 (2) 能用VHDl语言设计电路。 二实验设备

实验电路开发板DEO,Quartus仿真软件。 三实验要求

要求1:并用硬件描述语言实现异或门电路的设计。1)用QuartusII 波形仿真验证;2)下载到DE0 开发板验证。

要求2:,编写一个将二进制码转换成0-F 的七段码译码器。1)用QuartusII 波形仿真验证;2)下载到DE0 开发板验证。

要求3:编写一个十六进制计数器。1)用QuartusII 波形仿真验证;2)下载到DE0 开发板验证。

要求4:编写一个能实现占空比50%的5M 和50M 分频器即两个输出,输出信号频率分别为10Hz 和1Hz。1)下载到DE0 开发板验证。

扩展内容:利用已经实现的VHDL模块文件,采用原理图方法,实现0-F计数自动循环显示,频率10Hz。 四实验内容 1, 异或门

波形仿真为:

2, 0-F 的七段码译码器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY exa3_2 IS

PORT (data_in:IN STD_LOGIC_VECTOR(3 DOWNTO 0); dis_out:OUT STE_LOGIC_VECTOR(6 DOWNTO 0)); END exa3_2;

ARCHITECTURE fwm OF exa3_2 IS BEGIN

PROCESS(data_in) BEGIN

CASE data_in IS

WHEN”0000”=>dis_out<=”1000000”;--显示 0

WHEN”0001”=>dis_out<=”1111001”;--显示 1 WHEN”0010”=>dis_out<=”0100100”;--显示 2 WHEN”0011”=>dis_out<=”0110000”;--显示 3 WHEN”0100”=>dis_out<=”0011001”;--显示 4 WHEN”0101”=>dis_out<=”0010010”;--显示 5 WHEN”0110”=>dis_out<=”0000010”;--显示 6 WHEN”0111”=>dis_out<=”1111000”;--显示 7 WHEN”1000”=>dis_out<=”0000000”;--显示 8 WHEN”1001”=>dis_out<=”0010000”;--显示 9 WHEN”1010”=>dis_out<=”0001000”;--显示 A WHEN”1011”=>dis_out<=”0000000”;--显示 B WHEN”1100”=>dis_out<=”1000110”;--显示 C WHEN”1101”=>dis_out<=”1000000”;--显示 D WHEN”1110”=>dis_out<=”0000110”;--显示 E WHEN”1111”=>dis_out<=”0001110”;--显示 F

WHEN OTHERS=> dis_out<=”1111111”;--灭灯,不显示 END CASE; END PROCESS; END fwm;

说明:

七段码译码器由7个线段状的LED组成,1表示熄灭,0表示点亮,利用不同位置的LED熄灭和点亮组成0~F字符显示; 将每一个四位二进制码对应一个相应的七段码输出; 波形仿真如下:

3, 十六进制计数器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY exa3_3 IS

PORT ( clk,RST : IN STD_LOGIC;

DOUT : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); --四位计数 COUT : OUT STD_LOGIC); --进位位 END exa3_3;

ARCHITECTURE fwm OF exa3_3 IS

SIGNAL Q1 : STD_LOGIC_VECTOR (3 DOWNTO 0); BEGIN

PROCESS(clk,RST) BEGIN

IF RST = '0' THEN Q1<=(OTHERS => '0'); COUT<= '0'; ELSIF clk'EVENT AND clk='1' THEN Q1<=Q1+1; COUT<= '0';

IF Q1 >= \END IF; END IF;

END PROCESS; DOUT<=Q1 ; END fwm;

说明:

Count为进位输出;

Rst为清零信号,为0时清零;

每计数到1111时,输出count=1,Q=0000;

波形仿真:

4,分频器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY exa3_4 IS

PORT(clk:IN STD_LOGIC; A,B:IN STD_LOGIC;

clk_out1:OUT STD_LOGIC; clk_out2:OUT STD_LOGIC); END exa3_4;

ARCHITECTURE fwm OF exa3_4 IS

CONSTANT m : INTEGER:= 25000000; --50M 分频到 1Hz 时=25000000。 CONSTANT n : INTEGER:= 2500000; --5M 分频到 10Hz 时=2500000 SIGNAL tmp :STD_LOGIC; SIGNAL tmp1 :STD_LOGIC; BEGIN

--分频器输出50M PROCESS(clk, tmp)

VARIABLE cout : INTEGER:=0; BEGIN

IF A='1' THEN

IF clk'EVENT AND clk='1' THEN cout:=cout+1; --计数器+1

IF cout<=m THEN tmp<='0'; --计数小于等于 25000000,输出 0 ELSIF cout

clk_out1<=tmp; END IF;

END PROCESS; --分频器输出5M PROCESS(clk, tmp1)