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

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

实验三 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码十进制计数器状态转移表

左图为8421码十进制

计数器的状态转移表,abcd

为初状态,ABCD为下一状

态,每当有“1”出现时,

相应的管脚就亮灯,从而从

0000到1001的灯依次出

现。

VHDL代码如下:

LIBRARY IEEE;

USE 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<="0000";

ELSIF q_temp="1011"THEN

q_temp<="0000";

ELSE

q_temp<=q_temp+1;

END IF;

END IF;

END PROCESS;

q<=q_temp;

END a;

左图为八分

频器(占空比

50%)的状态转

移图,其中abc

为原状态,ABC为

下一状态。当输

出F为“1”时,

输出波形。

VHDL代码为:

LIBRARY IEEE;

USE div_8 IS

PORT(

clk:IN STD_LOGIC;

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%占空比)

波形分析:

每出现八次时钟为分频器的周期,输出的波形如图为占空比为50%的矩形波,构成了如题所要求的分频器。

六、故障及问题分析

1.每次实验中都应该注意到VHDL的文件名应与实体名一致,如果不一致编译会报错。我在实验过程中虽然原理图设计名与工程名相同,但在其后某程序名上犯了错误,导致出错。

2.在仿真波形的观察中,一定要调节好zoom一选项,缩放出便于观察的波形。

3.在命名过程一定要注意规范,不要出现非法字符。

4.在做10进制计数器时,由于板的固有频率为晶振的频率50兆赫兹,所以当以微秒级的时钟去自动跳变太快根本无法看清,应该加一段程序令时钟在微秒级跳变25兆次时外部时钟输出,从而令外部时钟变为秒级的,才能看见自动跳变现象。

七.总结和结论

1.本次实验是有关于VHDL的第三次实验,在前几次的实验中已经基本掌握了软件的用法,所以实验起来比较上手,还需要多加练习。

2.由于上次实验仅仅是运用图形工具,所以对VHDL语言的学习成了本次实验的难点,在仔细看过相关参考书后,发现其实VHDL语言还是相对比较好理解的,多次研读语言后应该能自行进行修改等工作。

3.有许多有语言功底的同学能编出十分简洁而有效的编码,值得我向其请教学习,还要更加努力掌握这门语言。

相关文档
最新文档