七段数码显示译码器的功能就是根据需要显示的字符,输出能够控制七段数码管显示出该字符的编码。
三、实验内容
1)用VHDL设计7段数码管显示译码电路,并在QuartusⅡ平台下对设计的译码器进行时序仿真,给出仿真的波形。
时序分析:
仿真波形:
2)数码管显示电路设计
利用以上设计的译码器模块,设计一个可以在8个数码管上同时显示字符的电路。
快速轮流点亮8个数码管,这样就可以实现同时显示8个字符的效果<尽管实际上同一时间只有一个数码管被点亮)。
要实现以上功能,就必须按照一定时钟节拍,轮流使译码器输出所需要字符的编码;同时控制数码管的公共电极电平,轮流点亮数码管<可以使用上个实验设计的计数器,加实验板上的74ls138来实现,其中74ls138的译码输入端与FPGA的io相连,8个译码输出端分别与8个数码管的公共电极相连)。
3)用QuartusⅡ对2)中的设计进行编译、综合、仿真,给出其所有信号的仿真波形和时序分析数据。
时序分析:
仿真波形:
4)通过QuartusⅡ集成环境,将设计下载到实验电路上进行硬件测试。
管脚锁定:
clk:
clk11clk1
D(3>:
PIO3030SW1
D(2>:
PIO2435SW2
D(1>:
PIO2536SW3
D(0>:
PIO2637SW4
A(7>:
81SEGdp
A(6>:
PIO611SEGg
A(5>:
PIO510SEGf
A(4>:
PIO49SEGe
A(3>:
PIO38SEGd
A(2>:
PIO27SEGc
A(1>:
PIO16SEGb
A(0>:
PIO05SEGa
74ls138译码输入S(2>:
80
S(1>:
79
S(0>:
78
四、思考题
尝试将74ls138的功能也用VHDL来实现,将所有逻辑功能都集成到FPGA里面,请写出其VHDL描述。
实验六数控分频器的设计
一、实验目的:
学习数控分频器的设计和测试方法,熟练掌握利用VHDL语言进行数字逻辑电路设计的方法。
二、实验原理:
数控分频器的功能为在不同输入信号时,对时钟信号进行不同的分频,在输出端输出不同频率的信号。
该电路可以用具有并行预置功能的加法计数器实现,方法是对应不同的输入信号,预置数<初始计数值)设定不同的值,然后用计数器的溢出信号作为输出信号或输出信号的控制值。
电路输出波形图:
三、实验内容:
1)根据实验原理编制实现数控分频器的VHDL程序。
提示:
可以将计数器溢出信号输出给一个翻转触发器,溢出信号的边沿作为触发器的触发信号,触发器的输出就是分频器的输出<注意计数器初始计数值与输出频率之间的关系)。
2)用QuartusⅡ对设计进行编译、综合、仿真,给出仿真波形和时序分析数据。
时序分析:
仿真波形:
3)通过QuartusⅡ集成环境,将设计下载到实验电路上进行硬件测试。
输入不同的clk信号和不同的输入控制信号,测试输出波形。
管脚锁定:
clkclk11
预置数D(3>PIO2330SW1
D(2>PIO2435SW2
D(1>Pio2536SW3
D(0>PIO2637SW4
分频输出FoutPIO1929LED12
四、思考题:
如果需要进行奇数分频<如3分频),能否够保持输出波形的占空比为50%?
如果不能,如何使占空比尽量接近50%;如果可以,应如何做?
答:
如果是进行奇数分频,就不能够保持输出波形的占空比为50%。
但是可以运用状态机进行设计。
实验七4位十进制频率计的设计
一、实验目的:
设计一个4位十进制频率计,学习用VHDL语言进行较为复杂的数字系统设计。
二、实验原理:
根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的脉冲计数允许信号,1秒计数结束后,计数值<即所测信号频率)锁入锁存器,并为下一次测频作准备,即将计数器清零。
三、实验内容:
1)根据频率计的工作原理,将电路划分成控制器、计数器、锁存器和LED显示几个模块,顶层文件与模块电路均用VHDL硬件描述语言进行设计。
控制器——产生1秒脉宽的计数允许信号、锁存信号和计数器清零信号
计数器——对输入信号的脉冲数进行累计
锁存器——锁存测得的频率值
LED显示——将频率值显示在数码管上
顶层文件框图如下:
用元件例化语句写出频率计的顶层文件。
2)分别用VHDL语言设计各个模块
本实验中不少模块在之前的实验中已经有所涉及,只需要对以前的设计做部分修改即可用于这次实验。
提示:
十进制计数器输出的应是4位十进制数的BCD码,因此一共的输出是4×4bit
3)用QuartusⅡ对设计进行编译、综合、仿真,给出仿真波形和时序分析数据<不包括数码管显示部分)。
时序分析:
仿真波形:
3)通过QuartusⅡ集成环境,将设计下载到实验电路上进行硬件测试。
管脚锁定:
Clkclk11
输入fx(频率任选>
数码管段输出A(7>:
81SEGdp
A(6>:
PIO611SEGg
A(5>:
PIO510SEGf
A(4>:
PIO49SEGe
A(3>:
PIO38SEGd
A(2>:
PIO27SEGc
A(1>:
PIO16SEGb
A(0>:
PIO05SEGa
74ls138输入S(1>:
79
S(0>:
78
四、思考题:
本实验中的控制器部分可以用以前实验中的哪个电路来实现,其输出的rst和ena信号是否可以合并为一个信号?
实验八交通灯逻辑控制电路设计
一、实验目的:
设计一个交通灯逻辑控制电路,学习用VHDL语言进行较为复杂的数字系统设计,体会原理图设计与VHDL描述、Bottom-up与Top-down设计方法之间的异同。
复习原理图的设计方法和流程。
二、实验原理:
请参考附录中的“数字电路课程设计”部分。
三、实验内容
1)用VHDL描述的方法完成“数字电路课程设计”中的电路设计。
用QuartusⅡ对设计进行编译、综合、仿真,给出仿真波形和时序分析数据。
时序分析:
仿真波形
2)在QuartusⅡ中将你在数字电路课程设计中设计好的原理图作为设计输入,进行编译、综合、仿真,给出仿真波形和时序分析数据。
时序分析:
时序分析:
3)通过QuartusⅡ集成环境,将以上两个设计下载到实验电路上进行硬件测试。
管脚锁定:
Clkclk11
数码管段输出A(7>:
81SEGdp
A(6>:
PIO611SEGg
A(5>:
PIO510SEGf
A(4>:
PIO49SEGe
A(3>:
PIO38SEGd
A(2>:
PIO27SEGc
A(1>:
PIO16SEGb
A(0>:
PIO05SEGa
74ls138输入S(1>:
79
S(0>:
78
信号灯输出
东redPIO1929LED12
greenPIO2028LED11
yellowPIO2127LED10
西redPIO2225LED9
greenPIO1223LED7
yellowPIO1223LED7
4)记录在QuartusⅡ下观察到由VHDL经过综合得到的RTL电路,与自己做数字电路课程设计时的电路原理图对比,看看有哪些异同。
四、思考题
在你本次实验的设计中,有用到上课讲到过的哪些优化手段吗?
如果没有,有什么地方是可以进一步优化的?