汕头大学实验报告
学院: 工学院系: 电子专业年级成绩:
姓名: 学号组: 实验时间: 2010-04-10 指导教师签字:
_______________________________________________________________________________ 实验《二》:组合逻辑与时序逻辑电路的VHDL模型实验
一、实验目的:
1、掌握组合逻辑和时序逻辑电路的设计方法。
2、掌握组合逻辑电路的静态测试方法。
加深FPGA设计的过程,并比较原理图输入和
文本输入的优劣。
3、了解通用同步计数器,异步计数器的使用方法。
4、理解积分分频器的原理。
二、硬件要求
1、拨位开关。
2、FPGA主芯片:EP1K30QC208。
3、LED显示模块。
三、实验原理
译码器是输入数码和输出数码之间的对应关系,也就是说,“输入码和输出码之间的对应表”这应该算是设计译码器的必须条件。
译码器常用来做码和码之间的转换器,也常被用于地址总线或用作电路的控制线。
例如下面为常见的3×8译码器的真值表:
实验中可根据需要,为3×8译码器加入使能控制脚。
一般的分频器可获得的分频频率种类分布不均匀,积分分频,能比较好的解决这个问题。
1、分频结果=来源频率×N/(2ⁿ-1);
2、频率波形不均匀。
四、实验内容及步骤
本实验内容是完成38译码器和5/8分频器的设计,然后将3×8译码器的结果在实验箱上实现,5/8分频器则能正确仿真、显示,实验步骤如下:
1、编写3×8译码器的VHDL代码。
2、用Quartus II对其进行编译仿真。
3、在仿真确定无误后,选择芯片ACEX1K EP1K30QC208。
4、给芯片进行管脚绑定,在此进行编译。
5、根据自己绑定的管脚,在实验箱上对键盘接口、显示接口和FPGA之间进行正确连
线。
6、给目标板下载代码,在开关输入键值,观看实验结果。
7、编写5/8分频器的VHDL代码。
8、用Quartus II对其进行编译仿真。
9、使用WaveForm进行波形仿真。
五、实验结果与分析
1、对于3×8译码器,设置了3位拨动开关为输入,8位LED为输出。
时序仿真结果如下:
由图可知,A的三位为输入,Y的8位为输出。
符合三八译码器真值表。
经过验证,3位拨
动开关的不同组合输入,都会在LED上得到正确的输出。
验证了38译码器的功能。
2、5/8分频器
由图可知,实现了5/8分频器的功能,仿真成功。
六、程序代码
1、38译码器:
LIBRARY ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
ENTITY decode3_8 IS
port(a:in std_logic_vector(2 downto 0);
en:in std_logic;
y:out std_logic_vector(7 downto 0));
end decode3_8;
architecture behave of decode3_8 is
signal sel:std_logic_vector(3 downto 0);
begin
sel(0)<=en; sel(1)<=a(0);
sel(2)<=a(1);sel(3)<=a(2);
with sel select
y<="00000001"when"0001",
"00000010"when"0011",
"00000100"when"0101",
"00001000"when"0111",
"00010000"when"1001",
"00100000"when"1011",
"01000000"when"1101",
"10000000"when"1111",
"11111111"when others;
end behave;
2、5/8分频器
LIBRARY ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
ENTITY fp5_8 IS
port(cp:in std_logic;
op:out std_logic);
end fp5_8;
architecture behave of fp5_8 is
signal dly:std_logic;
signal qn:std_logic_vector(3 downto 0);
begin
process(cp)
begin
if cp'event and cp='1' then
dly<=qn(3);
qn<=qn+5;
end if;
end process;
op<=(qn(3) Xor dly) and (not cp);
end behave;
七、思考题
如果要设计7/8分频器,需要如果进行改动?
答:只需要把程序里的qn<=qn+5 改为qn<=qn+7就能实现7/8分频了。