FPGA实验报告

FPGA实验报告
FPGA实验报告

南京理工大学泰州科技学院FPGA系统设计实验报告

教材名称:FPGA系统设计与应用开发

指导教师:周莉莉

实验室:4401

学院(系):电子电气工程学院

专业班级:10电信(1)班

姓名:周根生朱守超

学号:1002040149 1002040150

实验学期:2013-2014学年第一学期

总评成绩:教师签字:

南京理工大学泰州科技学院

FPGA系统设计实验报告

目录

实验一Max+plusII原理图设计输入 (1)

实验二简单逻辑电路设计与仿真 (6)

实验三组合逻辑电路设计(一) (11)

实验四组合逻辑电路设计(二) (16)

实验五有限状态机的设计 (26)

实验六数字频率计 (32)

南京理工大学泰州科技学院FPGA系统设计实验报告

课程: FPGA系统设计班级:10电信1班姓名:周根生朱守超学号:1002040149

1002040150

指导教师:周莉莉实验日期:

实验题目:Max+plusII原理图设计输入成绩:

一、设计任务

采用原理图设计输入法,设计一个具有四舍五入功能的电路,其输入为4位二进制数,要求输入大于或等于0101时,电路输出为高电平,小于0101时电路输出为低电平。

二、设计过程

根据设计要求列出四舍五入的真值表,如图1.1所示。

图1.1 四舍五入真值表

由图1.1可得化简的表达式为OUT=A+BD+BC,由逻辑表达式可知,要设计的电路图有四个输入端(A,B,C,D)和一个输出端OUT,整个电路由两个2输入端的与门和一个3输入的或门组成。

启动MAX+plusII,新建Graphic Editor file文件,后缀为.gdf。在编辑界面空白处双击左键,出现输入元件对话框如图1.2所示,在Symbol Name栏中直接输入元件的符号名OK,输入端(input),输出端(output),连接电路如图1.3所示。

图1.2 操作

图1.3 原理图

芯片型号选择

单击Assign,选择Device,如图1.4所示。

图1.4 型号

引脚命名

双击PIN_NAME,使其变黑后输入引脚名,并保存文件然后编译,如图1.5所示。

图1.5 编译

编译后,进行波形仿真如图1.6所示,在空白处右键,添加Enter Node from SNF,图1.7所示。

图1.6 新建波形图

图1.7 步骤

波形列出如图1.8所示,然后进行编译无误后可以修改引脚。

图1.8 波形图

修改引脚如图所示图1.9所示。

图1.9 引脚图分配

修改引脚后将接线联入到试验箱,进行下载仿真。当拨动开关为0100时,输出的为灭即为0,但是当拨动到0101时,输出为亮即为1符合四舍五入的程序。

三、总结

这个实验锻炼了我们对电路测试的动手能力。对四舍五入电路测试时可以用四个拨码开关设置输入数据,输出端接发光二极管,若输出为高电平时发光二极管亮,则输出为低电平时发光二极管不亮,只要输入小于5,输出为低电平,大于等于5时输出为高电平。则这个设计是合理的。

南京理工大学泰州科技学院

FPGA系统设计实验报告

课程:FPGA系统设计班级:10电信1班姓名:周根生朱守超学号:1002040149

1002040150

指导教师:周莉莉实验日期:

实验题目:简单逻辑电路设计与仿真成绩:

一、设计任务

1、学习并掌握MAX+PLUSⅡCPLD开发系统的基本操作。

2、学习在MAX+PLUSⅡ下设计简单逻辑电路与功能仿真方法。

分别用行为描述方式、数据流描述方式、结构化描述方式设计一位二进制的半加器。二、设计过程

一位二进制加法计数器设计与仿真

1、开机,进入MAX+PLUSⅡ开发系统。

2、在工具条中选择新建文件,弹出NEW界面,在该界面中选择Text Edit File项,然后点击OK,进入文本编辑状态。然后点击工具条中的保存按钮,在弹出的Save As 界面中选择后缀.VHD,并为当前的实验选择恰当的路径并创建项目名称。

3、编辑输入相应的程序代码。

4、在File菜单中选Project项,选择其中的Set Project to Current File,将项目设置为当前文件。然后保存当前文件。

5、选择器件。点击Assign 菜单的Device项,在弹出的Device界面中选择ACEX1K系列的EP1K10TC100-3。注意界面中的Show Only Fastest Speed Grades 不要选中,否则显示不出该器件。

6、点击MAX+PlusII菜单下的Compiler进行编译,然后点击START按钮开始编译。对编译的结果进行观察,如果出现错误或告警,检查输入的源代码排除语法错误并重新编译,重复此过程直到编译通过。

7、点击MAX+PLUSⅡ菜单下的Waveform Editor 子菜单出现Waveform Editor窗口。点击鼠标右键,选择Enter Nodes From SNF子菜单,在Enter Nodes From SNF对话框中点击List 按钮、“=>”按钮和Ok按钮,填入电路节点名称。

8、在时钟输入端CLK处设置好方波脉冲,点击MAX+PLUSⅡ菜单下的Simulater子菜单,进行波形仿真以验证电路的逻辑功能。

9、硬件下载操作。(按任务要求以及设计步骤写出程序代码或原理图、管脚分配情况、电路生成符号、仿真波形图等,以上步骤需要配图说明;说明下载到硬件实验箱中调试情况)(1)编写程序行为描述方式如图2.1所示。

图2.1行为描述法波形图如图2.2所示

图2.2波形图

修改管脚如图所示图2.3所示。

图2.3改管脚(2)编写程序数据流描述方式如图2.4所示。

图2.4数据流描述方式

其波形图如图2.5所示。

图2.5波形图更改管脚如图2.6所示。

图2.6改管脚(3)结构化描述方式如图2.7所示。

And-gate

Xor-gate

图2.7结构化描述其波形图如图2.8所示。

图2.8波形图其引脚修改如图2.9所示。

图2.9改引脚其电路生成符号为如图2.10所示。

图2.10电路生成符号

通过将程序下载到实验箱上时我们可以将其连接到拨码开关中,将a,b,s,c连入对应的开关可以看到,当拨码为ab00时cs为00灭,ab01时cs为01,ab10时cs为01,ab为11是cs为10。

三、总结

这个实验锻炼了我们编程和实际动手能力。行为描述设计目标行为抽象程度高,程序编写简单,适用于大型的,复杂的模块型的设计项目。数据流方式电路中的逻辑关系明了,适用于小型电路的设计项目。结构化描述方式电路结构尤其是模块化结构清楚,可以用于模块化层次化设计中。

南京理工大学泰州科技学院

FPGA系统设计实验报告

课程:FPGA系统设计班级:10电信1班姓名:周根生朱守超学号:1002040149

1002040150

指导教师:周莉莉实验日期:

实验题目:组合逻辑电路设计(一)成绩:

一、设计任务

四舍五入判别电路

1、简单信号赋值语句;

2、条件信号赋值语句;

自行画出真值表,求出逻辑表达式,写出对应程序,并仿真、下载验证

三态门电路的实现

使用IF语句完成三态门的设计。

在数字电路中,三态门电路是在普通门电路的基础上附加控制电路构成的。顾名思义,三态门电路不但具有逻辑值0 和逻辑值1,而且还具有高阻态输出的第三种状态(或称禁止态)。三态门主要用于可编程逻辑器件管脚的双向口设置,在后续实验中会涉及。三态门电路的逻辑电路图3.1。根据三态门的逻辑电路图和真值表,不难看出三态门电路的基本工作原理是:当控制端口的输入使能信号EN=‘1’,那么直接将输入端口的数据送到输出端口上;当控制端口的输入使能信号EN=‘0’,那么这时输出端口呈高阻状态。如表3.1所示。

图3.1 三态门表3.1 三态门真值表

二、设计过程

如图所示其真值表为图3.2所示。

图3.2真值表

用简单信号赋值语句进行描述的程序如图3.3所示。

图3.3简单信号赋值语句程序用条件信号赋值语句进行描述的程序如图3.4所示。

图3.4条件信号赋值语句程序用其进行波形仿真如图3.5所示。

图3.5波形图

修改其引脚图如图3.6所示。

图3.6修改引脚图

完成好后电路生成的符号如图3.7所示。

图3.7电路生成符号

将其下载到实验箱上时,可以观察其变化。当输入信号大于等于5时,输出信号为1,当输入信号小于5时,输出信号为0。

三态门电路的实现

其程序如图3.8所示。

图3.8三态门程序其进行仿真可以得出其波形图如图3.9所示。

图3.9三态门波形图更改其管脚如图3.10所示。

图3.10改管脚

其电路生成符号如图3.11所示

图3.11电路生成符号

三、总结

在上面的四舍五入的两种程序中,结构体中用了条件赋值语句,虽然条件赋值语句比简单赋值语句复杂,但是条件赋值的设计过程比简单赋值简单,条件赋值中可以不列真值表,不必求逻辑方程,用行为描述方式以条件信号赋值语句来实现,使设计简单,更加明了。

南京理工大学泰州科技学院

FPGA系统设计实验报告

课程:FPGA系统设计班级:10电信1班姓名:周根生朱守超学号:1002040149

1002040150

指导教师:周莉莉实验日期:

实验题目:组合逻辑电路设计(二)成绩:

一、设计任务

1、加法计数器的实现;

2、七段数码显示译码器的设计;

3、数码管动态扫描电路;

4、八位数码扫描显示电路的设计。

二、设计过程

1.加法计数器的实现

加法计数器的动作是,每次时钟脉冲信号c lk 为上升沿时,计数器会将计数值加1。以图4.1为例,它是2bits 的计数器,所以计数值(由Q1Q0 组成),依次是0,1,2,3,0,1…,周而复始。

图4.1 二位加法计数器电路符号及相关波形

步骤:

1、新建一个VHDL文本文件;

2、VHDL程序输入

用VHDL设计一个四位十进制加法计数器,要求具有异步清零端 CLR、使能端 EN、时钟输入端 CLK、计数输出段Q[3..0]、进位输出端 C,数据类型std_logic。

实体名:counter。

3、对源程序进行语法检查和编译;

4、波形仿真;

其新建的程序如图下所示

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY counter IS

PORT(clk,en,clr:IN STD_LOGIC;

q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

c:OUT STD_LOGIC);

END counter;

ARCHITECTURE one OF counter IS

SIGNAL QOUT:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

PROCESS(clk,en,clr)

BEGIN

IF(CLR='0')THEN

QOUT<="0000";

ELSIF(clk'event and clk='1')THEN

IF(en='1')THEN

IF QOUT=9 THEN

QOUT<="0000";

c<='1';

ELSE

QOUT<=QOUT+1;

c<='0';

END IF;

END IF;

END IF;

END PROCESS;

q<=QOUT;

END ONE;

其波形图如图4.2所示。

图4.2波形图

其电路生成符号如图4.3所示。

图4.3电路生成符号

2.七段数码显示译码器的设计

7段数码是纯组合电路,通常的小规模专用IC。

下面作为7段BCD码译码器,输出信号LED7S的7位分别接如图2数码管的7个段,高位在左,低位在右。例如当LED7S输出为“1101101”时,数码管的7个段:g、f、e、d、c、b、a分别接1、1、0、1、1、0、1;接有高电平的段发亮,于是数码管显示“5”。

注意:这里没有考虑表示小数点的发光管,如果要考虑,需要增加段h。

设计该译码器的必须条件,首先是要列出输入码与输出码之间的对应关系,即真值表。如图表4.1所示。

表4.1真值表

步骤:

1、新建一个VHDL文本文件;

相关主题
相关文档
最新文档