基于FPGA实现的流水灯实验
一、开发环境
软件环境:Quartus Prime 17.1 ,notepad++,gvim,modelsim-SE,TimeGen3
硬件环境:DE2-115(Intel FPGA Cyclone IV,EP4CE115F29C7N)
二、实验目的
1.掌握Quartus Prime 17.1的开发环境及FPGA的开发流程。
2.熟悉开发板(DE2-115)的硬件资源及其使用方法。
3.掌握二进制译码器、计数器的设计与实现方法。
三、实验原理
译码是将具有特定含义的二进制码转换成对应的输出信号,具有译码功能的逻辑电路称为译码器。译码器分为两种类型,一种是将一系列代码转换成与之一一对应的有效信号。这种译码器可称为二进制译码器或唯一地址译码器,它常用于计算机中对存储器单元地址的译码,即将每一个地址代码转换成一个有效信号,从而选中对应的单元。另一种是将一种代码转换成另一种代码,所以也称为代码变换器。例如BCD至七段显示译码器执行的动作就是把一个4位BCD码转换成为七段码输出,以便在七段显示器上显示出这个十进制数。
计数器一种用于对时钟脉冲进行计数的电路,它还可用于分频、定时、产生节拍脉冲以及其他时序信号。计数器的种类不胜枚举,按触发器动作分类,可分为同步计数器和异步计数器;按编码数值增减分类,可分为递增计数器、递减计数器和可逆计数器;按编码分类,又可分为二进制码(简称二进制)计数器、BCD计数器、循环码计数器。
计数器运行时,依次遍历规定的各状态后完成一次循环。它所经过的状态总数称为计数器的“模”(Modulo),并用M表示。若某个计数器在n个状态下循环计数,通常则称之为模n计数器。有时也把模n计数器称为容量为n的计数器或n进制计数器。
本实验将把二进制译码器与计数器结合起来,按照框图1.1组成一个流水灯电路,实现依次循环点亮8个LED的功能。要求用VerilogHDL进行设计,并在FPGA开发平台上最终实现该电路。
图1.1 流水灯电路的组成框图
四、实验步骤
4.1 3/8线译码器的设计与实现
设计一个带使能端的3线-8线译码器,其功能表4.1所示。
表4.1 3/8线译码器逻辑功能表
输 入 |
输 出 |
||||||||||
EN |
A2 |
A1 |
A0 |
Y0 |
Y1 |
Y2 |
Y3 |
Y4 |
Y5 |
Y6 |
Y7 |
0 |
x |
x |
x |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
< |