FPGA实验报告.docx
《FPGA实验报告.docx》由会员分享,可在线阅读,更多相关《FPGA实验报告.docx(32页珍藏版)》请在冰豆网上搜索。
![FPGA实验报告.docx](https://file1.bdocx.com/fileroot1/2023-2/3/b2a40627-0a3b-401e-a401-3aee4bf85769/b2a40627-0a3b-401e-a401-3aee4bf857691.gif)
FPGA实验报告
FPGA实验报告
FPGA原理与应用实验报告
专业名称:
通信工程
班级学号:
学生姓名:
指导教师:
1
1一位半加器的设计...............................................................................................................................................3
1.1实验目的....................................................................................................................................................3
1.2实验内容....................................................................................................................................................32触发器的设计...................................................................................................................................................13
2.1实验目的................................................................................................................................................13
2.2实验原理................................................................................................................................................13
2.3实验内容................................................................................................................................................133四位加法器的设计.............................................................................................................................................17
3.1实验目的................................................................................................................................................17
3.2实验要求................................................................................................................................................17
3.3实验内容................................................................................................................................................174优先级8-3编码器的设计................................................................................................................................19
4.1实验目的................................................................................................................................................19
4.2实验要求................................................................................................................................................19
4.3实验内容................................................................................................................................................195增计数器的设计...............................................................................................................................................22
5.1实验目的................................................................................................................................................22
5.2实验要求................................................................................................................................................22
5.3实验内容................................................................................................................................................226七人表决器设计...............................................................................................................................................25
6.1实验目的................................................................................................................................................25
6.2实验要求................................................................................................................................................25
6.3实验内容..................................................................................................................................................25附录.........................................................................................................................................................................28
2
1一位半加器的设计1.1实验目的
(1)通过一个简单的一位半加器的设计,熟悉开发环境,掌握组合逻辑电路的设计方法。
(2)初步了解可编程器件设计的全过程。
1.2实验内容
一、创建工程
选择菜单栏File>NewProjectWizard,新建一个工程。
如图2所示。
工程名的
所示。
设定对话框如图3
图2
3
图3
第一个输入框为工程目录输入框,设定好后,所有的生成文件将放入这个工作目录。
第二个输入框为工程名称输入框,第三个输入框为顶层实体名称输入框。
一般情况下工程名称与实体名称相同,使用者也可以根据自已的实际情况来设定成不同。
图4新建工程对话框图5指定工程名称及工作目录
点击【NEXT】,进入下一个设定对话框图5,让你将之前已经设计好的工程文
4
件添加到本项目工程里来,之前若没有设计好的文件,直接点Next,进入下一步器件选择对话框图6.
图5
图6器件选择界面
首先在对话框的左上方的Family下拉菜单中选取Cyclone,在中间右边的Pincount下拉选择240,Speedgrade下拉菜单中选取8,在左下方的Availabledevices框中选取EP1C12F240C8,点击【NEXT】完成器件的选取,进入EDATOOL设定界面如图7所示。
本实验只使用QuartusII的集成环境进行开发,不使用第三方EDA
5
工具,所以不需要修改。
图7EDATOOL对话框
按默认选项,点击【NEXT】出现新建工程以前所有的设定信息,如图8所示,点击FINISH完成新建工程的建立,如图9所示。
图8新建工程信息
6
图9新建立的工程界面
到此我们一个新的项目工程已经建立起来~但真正的电路设计工作还没开始。
由于QuartusII软件的应用都是基于一个项目工程来做的~因此无论设计一个简单电路还是很复杂的电路都必须先完成以上步骤~建立一个后缀为.qpf的ProjectFile。
二、建立设计输入文件
点击File>New,新建一个VHDL文件。
见图10。
图10新建VHDL文件
点击OK,将VHDL程序写入,见图11,并点击File>Save,保存
libraryieee;
useieee.std_logic_1164.all;
entityhalfaddis
7
port(a,b:
instd_logic;
so,co:
outstd_logic);--定义输入、输出端口
endhalfadd;
architecturebhofhalfaddis
begin
so<=axorb;--异或运算
co<=aandb;--与运算
endbh;
图11VHDL程序写入
三、编译(Compilation)
选择Processing>StartCompilation对编写的代码进行编译,可以在状态窗口看到当前编译的运行状态,在消息窗口中可以看到编译中的警告、错误和消息。
四、建立仿真波形文件,进行仿真
选择File>New,在弹出的对话框中点击OtherFiles,选择VectorWaveformFile,并点击OK,建立一个波形文件。
见图12、13。
8
图12新建波形文件
图13
在如图13的Name标签区域内双击鼠标左键,弹出如图14所示的添加节点对话框。
图14添加节点对话框
在如图14所示的添加节点对话框中单击NodeFinder按钮,弹出如图15所示的对话框,设置如图15、16所示,完成后界面如17所示。
9
图15添加节点
图16添加节点后的界面
图17
10
默认的仿真结束时间为1μS,根据仿真需要,可以自由设置仿真文件的结束时间。
选择Edit>>EndTime命令,弹出结束时间对话框,在Time框内输入仿真结束时间。
在这里采用默认设置(1μS)。
端点,进行初始值设置编辑时将使用到波形编辑工具对加入到波形文件中的输入
栏中的各种工具。
图显示了工具栏中各工具的功能。
单击选中需要设置的端点,对输入节点进行激励设置。
14、点击Processing>Simulationtools,在弹出对话框中选择功能仿真,仿真结束后,查看仿真结果是否符合实验要求。
点击生成功能仿真网表
15、开始仿真查看仿真结果
11
五、编译与仿真结果
半加器模块
半加器仿真波形
12
2触发器的设计
2.1实验目的
(1)了解基本触发器的工作原理。
(2)学习QuartusII中基于原理图设计的流程。
2.2实验原理
基本RS器的电路如下图1所示。
它可以由两个与非门交叉耦合组成,也可以由
AAS1R23Q1Q23
BB456Q4QR5S6
图1基本触发器电路图
两个或非门交叉耦合组成。
现在以两个与非门组成的基本触发器为例,来分析其工作原理。
根据与非逻辑关系,可以得到基本触发器的状态转移真值表及简化的真值表,如下表所示:
状态转移真值表简化真值表
nn,1n,1QQQSSRR
0100010
0110101n100111Q
101100不定
1100
1111
000不定
001不定
表1基本触发器状态转移真值表
根据真值表,不难写出其特征方程:
其中式
(2)为约束条件。
2.3实验内容
一、创建工程
打开QuartusII软件,新建一个工程,工程名chufaqi。
13
二、建立设计输入文件
新建一个BlockDiagram/SchematicFile。
见图2,图3。
图2新建原理图文件
图3编辑界面
图4工具栏
在新建的原理图中双击鼠标左键,在弹出的Symbol对话框中的Name栏中输入nand2(在右侧的窗口中就会出现一个二输入与非门符号),或者直接在libraries下面找到nand2。
可以打开Repeat-insertmode选项(此选项使得用户易于增加一个符号的多个实例)。
见图5。
14
图5在Sysmbol对话框中输入与非门
点击OK,在原理图文件中点击两次鼠标左键,然后点击鼠标右键并选择Cancel。
此时,可以看到原理图中就会出现两个与非门。
导线连接:
当需要连接两个端口时,只需将鼠标移动到其中一个端口上,当鼠标变为十字形状时,一直按下鼠标并拖动到另一端口,出现小方框时,松开左键即可。
见图6。
然后添加输入输出端口,再次双击鼠标左键,在弹出的Symbol对话框中的Name栏中输入input,然后点击OK,在原理图中输入两个input端口,见图7。
同样的步骤,再输入两个output端口。
图6正确连接后的原理图
图7输入input端口实例
把输入输出实例与原理图中的端口进行连接,并修改输入输出端口的Pin_Name,在input或output图形标志上双击,出现PinProperities窗口,在pinnames处,键入更改的名称,分别
15
为:
输入为R和S,输出为Q和NQ。
。
到此为止就完成了一个RS触发器的原理图输入。
图8完整的原理图
三、编译(Compilation)
选择Processing>StartCompilation对编写的代码进行编译,可以在状态窗口看到当前编译的运行状态,在消息窗口中可以看到编译中的警告、错误和消息。
四、建立仿真波形文件,进行仿真验证
触发器原理图
触发器仿真波形
16
3四位加法器的设计
3.1实验目的
(1)熟悉QuartusII软件环境的使用,EDA开发的基本流程
(2)掌握QuartusII中基于VHDL语言设计的流程
(3)掌握QuartusII中基于原理图设计的流程
(4)综合应用VHDL语言及原理图进行电路设计
(5)完成四位加法器的设计
3.2实验要求
在数字系统中,加法器是最常见的组合逻辑器件,多位二进制码加法器的低位是半加器,高位是全加器。
工程名adder4。
(1)用VHDL语言设计一位半加器,文件名halfadd1.VHD,调试无误后生成符号
(2)用VHDL语言设计一位全加器,文件名alladd1.VHD,调试无误后并生成符号
(3)建立顶层原理图文件adder4.bfd,调用已设计的一位半加器和一位全加器实现四位加法器。
3.3实验内容
一、创建工程
二、建立设计输入文件
生成一位半加器和一位全加器模块图
17
三、编译与仿真
四位加法器原理图
四位加法器仿真波形
18
4优先级8-3编码器的设计
4.1实验目的
1.掌握EDA开发的基本流程。
2.编码器、译码器的实现原理。
3.熟练使用IF条件语句,注意If语句与case语句的区别,case语句中,表达式是没有优先级的,而多条件的If语句的条件是有优先级的,最前面的条件优先级最高。
4.2实验要求
编写VHDL程序设计8-3编码器。
8-3优先级编码器真值表:
输入输出d7d6d5d4d3d2d0d0y2y1y0
1×××××××111
01××××××110
001×××××101
0001××××100
00001×××011
000001××010
0000001×001
00000001000
4.3实验内容
一、创建工程
二、建立设计输入文件
程序:
libraryieee;
useieee.std_logic_1164.all;entitybianmaqiis
port(a,b:
instd_logic;
d7,d6,d5,d4,d3,d2,d1,d0:
instd_logic;
hhhh:
instd_logic_vector(7downto0);
cccc:
outstd_logic_vector(2downto0));--定义输入、输出端口
endbianmaqi;
architecturebhofbianmaqiisbegin
19
process(a)
begin
if(d7='1')then
cccc<="111";
else
if(d6='1')then
cccc<="110";
else
if(d5='1')then
cccc<="101";
else
if(d4='1')then
cccc<="100";
else
if(d3='1')then
cccc<="011";
else
if(d2='1')then
cccc<="010";
else
if(d1='1')then
cccc<="001";
else
if(d0='1')then
cccc<="000";
else
cccc<=null;
endif;
endif;
endif;
endif;
endif;
endif;
endif;
20
endif;
endprocess;
endbh;
三、编译(Compilation)与仿真
8—3编码器模块图
8—3编码器仿真波形
21
5增计数器的设计
5.1实验目的
(1)掌握时序电路的设计方法,加深对计数器的认识。
(2)了解用VHDL语言实现计数器的过程。
5.2实验要求
定时和计数的本质是相同的,它们都是对一个输入脉冲进行计数,如果输入脉冲的频率一定,则记录一定个数的脉冲,其所需的时间是一定的。
因此,使用同一个接口芯片,既能进行计数,又能进行计时,统称为计时器/计数器。
(Timer/Counter简称T/C)。
设计十进制增计数器,每当时钟脉冲上升沿,计数器将计数值加1,要求计数器有同步使能信号,异步清0信号,进位指示。
按FPGA设计流程,利用EDA实验箱中的拨挡开关模块和LED及数码管来实现其功能。
(1)创建工程
(2)建立设计输入文件
(3)编译(Compilation)
(4)建立仿真波形文件,进行仿真
(5)仿真无误后,根据引脚对照表,对实验中用到的拨挡开关及LED进行管脚绑定(6)再重新全编译一次。
(7)programmer,用下载电缆通过JTAG接口将对应的sof文件下载到FPGA中。
(8)观察实验结果是否与自己的真值表相吻合。
5.3实验内容
程序:
LIBRARYieee;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYcounterIS
PORT(clk,clear,en:
INSTD_LOGIC;
c:
OUTSTD_LOGIC;
data_out:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
led_dag:
outSTD_LOGIC_VECTOR(7DOWNTO0));
ENDcounter;
22
ARCHITECTUREjishuOFcounterIS
SIGNALcount:
STD_LOGIC_VECTOR(3DOWNTO0);BEGIN
PROCESS(clk,clear,en)
--VARIABLEcount:
integerrange0to9;
begin