FPGA实验报告.docx

上传人:b****1 文档编号:15134973 上传时间:2023-07-01 格式:DOCX 页数:33 大小:967.37KB
下载 相关 举报
FPGA实验报告.docx_第1页
第1页 / 共33页
FPGA实验报告.docx_第2页
第2页 / 共33页
FPGA实验报告.docx_第3页
第3页 / 共33页
FPGA实验报告.docx_第4页
第4页 / 共33页
FPGA实验报告.docx_第5页
第5页 / 共33页
FPGA实验报告.docx_第6页
第6页 / 共33页
FPGA实验报告.docx_第7页
第7页 / 共33页
FPGA实验报告.docx_第8页
第8页 / 共33页
FPGA实验报告.docx_第9页
第9页 / 共33页
FPGA实验报告.docx_第10页
第10页 / 共33页
FPGA实验报告.docx_第11页
第11页 / 共33页
FPGA实验报告.docx_第12页
第12页 / 共33页
FPGA实验报告.docx_第13页
第13页 / 共33页
FPGA实验报告.docx_第14页
第14页 / 共33页
FPGA实验报告.docx_第15页
第15页 / 共33页
FPGA实验报告.docx_第16页
第16页 / 共33页
FPGA实验报告.docx_第17页
第17页 / 共33页
FPGA实验报告.docx_第18页
第18页 / 共33页
FPGA实验报告.docx_第19页
第19页 / 共33页
FPGA实验报告.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

FPGA实验报告.docx

《FPGA实验报告.docx》由会员分享,可在线阅读,更多相关《FPGA实验报告.docx(33页珍藏版)》请在冰点文库上搜索。

FPGA实验报告.docx

FPGA实验报告

 

FPGA原理与应用实验报告

 

 

专业名称:

通信工程

班级学号:

学生姓名:

指导教师:

 

目录

1一位半加器的设计2

1.1实验目的2

1.2实验内容2

2触发器的设计13

2.1实验目的13

2.2实验原理13

2.3实验内容13

3四位加法器的设计17

3.1实验目的17

3.2实验要求17

3.3实验内容17

4优先级8-3编码器的设计19

4.1实验目的19

4.2实验要求19

4.3实验内容19

5增计数器的设计19

5.1实验目的22

5.2实验要求22

5.3实验内容22

6七人表决器设计25

6.1实验目的25

6.2实验要求25

6.3实验内容25

附录28

1一位半加器的设计

1.1实验目的

(1)通过一个简单的一位半加器的设计,熟悉开发环境,掌握组合逻辑电路的设计方法。

(2)初步了解可编程器件设计的全过程。

1.2实验内容

一、创建工程

选择菜单栏File>NewProjectWizard,新建一个工程。

如图2所示。

工程名的设定对话框如图3所示。

图2

图3

第一个输入框为工程目录输入框,设定好后,所有的生成文件将放入这个工作目录。

第二个输入框为工程名称输入框,第三个输入框为顶层实体名称输入框。

一般情况下工程名称与实体名称相同,使用者也可以根据自已的实际情况来设定成不同。

图4新建工程对话框图5指定工程名称及工作目录

点击【NEXT】,进入下一个设定对话框图5,让你将之前已经设计好的工程文件添加到本项目工程里来,之前若没有设计好的文件,直接点Next,进入下一步器件选择对话框图6.

图5

图6器件选择界面

首先在对话框的左上方的Family下拉菜单中选取Cyclone,在中间右边的Pincount下拉选择240,Speedgrade下拉菜单中选取8,在左下方的Availabledevices框中选取EP1C12F240C8,点击【NEXT】完成器件的选取,进入EDATOOL设定界面如图7所示。

本实验只使用QuartusII的集成环境进行开发,不使用第三方EDA工具,所以不需要修改。

图7EDATOOL对话框

按默认选项,点击【NEXT】出现新建工程以前所有的设定信息,如图8所示,点击FINISH完成新建工程的建立,如图9所示。

图8新建工程信息

图9新建立的工程界面

(到此我们一个新的项目工程已经建立起来,但真正的电路设计工作还没开始。

由于QuartusII软件的应用都是基于一个项目工程来做的,因此无论设计一个简单电路还是很复杂的电路都必须先完成以上步骤,建立一个后缀为.qpf的ProjectFile。

二、建立设计输入文件

点击File>New,新建一个VHDL文件。

见图10。

 

图10新建VHDL文件

点击OK,将VHDL程序写入,见图11,并点击File>Save,保存

libraryieee;

useieee.std_logic_1164.all;

entityhalfaddis

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。

图12新建波形文件

图13

在如图13的Name标签区域内双击鼠标左键,弹出如图14所示的添加节点对话框。

图14添加节点对话框

在如图14所示的添加节点对话框中单击NodeFinder按钮,弹出如图15所示的对话框,设置如图15、16所示,完成后界面如17所示。

图15添加节点

图16添加节点后的界面

图17

默认的仿真结束时间为1μS,根据仿真需要,可以自由设置仿真文件的结束时间。

选择Edit>>EndTime命令,弹出结束时间对话框,在Time框内输入仿真结束时间。

在这里采用默认设置(1μS)。

对加入到波形文件中的输入端点,进行初始值设置编辑时将使用到波形编辑工具栏中的各种工具。

图显示了工具栏中各工具的功能。

单击选中需要设置的端点,对输入节点进行激励设置。

 

14、点击Processing>Simulationtools,在弹出对话框中选择功能仿真,仿真结束后,查看仿真结果是否符合实验要求。

15、

五、编译与仿真结果

半加器模块

 

 

半加器仿真波形

2触发器的设计

2.1实验目的

(1)了解基本触发器的工作原理。

(2)学习QuartusII中基于原理图设计的流程。

2.2实验原理

基本RS器的电路如下图1所示。

它可以由两个与非门交叉耦合组成,也可以由

图1基本触发器电路图

两个或非门交叉耦合组成。

现在以两个与非门组成的基本触发器为例,来分析其工作原理。

根据与非逻辑关系,可以得到基本触发器的状态转移真值表及简化的真值表,如下表所示:

状态转移真值表

简化真值表

0

1

0

0

0

1

0

0

1

1

0

1

0

1

1

0

0

1

1

1

Qn

1

0

1

1

0

0

不定

1

1

0

0

1

1

1

1

0

0

0

不定

0

0

1

不定

表1基本触发器状态转移真值表

根据真值表,不难写出其特征方程:

其中式

(2)为约束条件。

2.3实验内容

一、创建工程

打开QuartusII软件,新建一个工程,工程名chufaqi。

二、建立设计输入文件

新建一个BlockDiagram/SchematicFile。

见图2,图3。

图2新建原理图文件

图3编辑界面

图4工具栏

在新建的原理图中双击鼠标左键,在弹出的Symbol对话框中的Name栏中输入nand2(在右侧的窗口中就会出现一个二输入与非门符号),或者直接在libraries下面找到nand2。

可以打开Repeat-insertmode选项(此选项使得用户易于增加一个符号的多个实例)。

见图5。

图5在Sysmbol对话框中输入与非门

点击OK,在原理图文件中点击两次鼠标左键,然后点击鼠标右键并选择Cancel。

此时,可以看到原理图中就会出现两个与非门。

导线连接:

当需要连接两个端口时,只需将鼠标移动到其中一个端口上,当鼠标变为十字形状时,一直按下鼠标并拖动到另一端口,出现小方框时,松开左键即可。

见图6。

然后添加输入输出端口,再次双击鼠标左键,在弹出的Symbol对话框中的Name栏中输入input,然后点击OK,在原理图中输入两个input端口,见图7。

同样的步骤,再输入两个output端口。

图6正确连接后的原理图

图7输入input端口实例

把输入输出实例与原理图中的端口进行连接,并修改输入输出端口的Pin_Name,在input或output图形标志上双击,出现PinProperities窗口,在pinnames处,键入更改的名称,分别为:

输入为R和S,输出为Q和NQ。

到此为止就完成了一个RS触发器的原理图输入。

图8完整的原理图

三、编译(Compilation)

选择Processing>StartCompilation对编写的代码进行编译,可以在状态窗口看到当前编译的运行状态,在消息窗口中可以看到编译中的警告、错误和消息。

4、建立仿真波形文件,进行仿真验证

触发器原理图

触发器仿真波形

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实验内容

1、创建工程

2、建立设计输入文件

生成一位半加器和一位全加器模块图

 

3、编译与仿真

四位加法器原理图

四位加法器仿真波形

 

4优先级8-3编码器的设计

4.1实验目的

1.掌握EDA开发的基本流程。

2.编码器、译码器的实现原理。

3.熟练使用IF条件语句,注意If语句与case语句的区别,case语句中,表达式是没有优先级的,而多条件的If语句的条件是有优先级的,最前面的条件优先级最高。

4.2实验要求

编写VHDL程序设计8-3编码器。

8-3优先级编码器真值表:

输入

输出

d7

d6

d5

d4

d3

d2

d0

d0

y2

y1

y0

1

×

×

×

×

×

×

×

1

1

1

0

1

×

×

×

×

×

×

1

1

0

0

0

1

×

×

×

×

×

1

0

1

0

0

0

1

×

×

×

×

1

0

0

0

0

0

0

1

×

×

×

0

1

1

0

0

0

0

0

1

×

×

0

1

0

0

0

0

0

0

0

1

×

0

0

1

0

0

0

0

0

0

0

1

0

0

0

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;

architecturebhofbianmaqiis

begin

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;

endif;

endprocess;

endbh;

3、编译(Compilation)与仿真

8—3编码器模块图

8—3编码器仿真波形

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;

ARCHITECTUREjishuOFcounterIS

SIGNALcount:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(clk,clear,en)

--VARIABLEcount:

integerrange0to9;

begin

IFclear='1'THENcount<=(others=>'0');

ELSIF(clk'EVENTANDclk='1'ANDclk'LAST_VALUE='0')THEN

IF(en='1')THEN

IFcount=9THENc<='1';count<=(others=>'0');

ELSEc<='0';count<=count+1;

ENDIF;

ENDIF;

ENDIF;

data_out<=count;

endprocess;

process(clk)

begin

casecountis

when"0001"=>led_dag<="01100001";

when"0010"=>led_dag<="11011011";

when"0011"=>led_dag<="11110011";

when"0100"=>led_dag<="01100111";

when"0101"=>led_dag<="10110111";

when"0110"=>led_dag<="00111111";

when"0111"=>led_dag<="11100001";

when"1000"=>led_dag<="11111111";

when"1001"=>led_dag<="11100111";

when"0000"=>led_dag<="11111101";

whenothers=>null;

endcase;

ENDPROCESS;

ENDjishu;

编译与仿真运行结果:

Counter模块图

Counter仿真波形

6七人表决器设计

6.1实验目的

(1)掌握EDA开发的基本流程,熟悉EDA实验箱。

(2)学习用VHDL编写复杂功能的代码。

6.2实验要求

七人表决器顾名思义就是由七个人来投票,当同意的票数大于或者等于4人时,则认为同意;反之,当否决的票数大于或者等于4人时,则认为不同意。

实验中用7个拨挡开关来表示七个人,当对应的拨挡开关输入为‘1’时,表示此人同意;否则若拨挡开关输入为‘0’时,则表示此人反对。

表决的结果用一个LED表示,若表决的结果为同意,则LED被点亮;否则,如果表决的结果为反对,则LED不会被点亮。

用数码管指示同意的投票数。

按FPGA设计流程,利用EDA/SOPC-II+实验箱中的拨挡开关模块和LED及数码管来实现其功能。

6.3实验内容

程序:

libraryieee;

useieee.std_logic_1164.all;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

entitybiaois

port(reset:

instd_logic;

xin:

instd_logic_vector(6downto0);

sel:

outstd_logic;

xout:

outstd_logic_vector(6downto0);

xout1:

outstd_logic_vector(6downto0));

endentity;

architecturebevofbiaois

begin

process(xin)

variablej:

integer:

=0;

begin

j:

=0;

foriin0to6loop

ifxin(i)='1'then

j:

=j+1;

endif;

endloop;

casejis

when0=>xout1<="1000000";

when1=>xout1<="1111001";

when2=>xout1<="0100100";

when3=>xout1<="0110000";

when4=>xout1<="0011001";

when5=>xout1<="0010010";

when6=>xout1<="0000010";

when7=>xout1<="1111000";

whenothers=>null;

endcase;

ifj>3then

xout<="1110011";

sel<='1';

elsexout<="1111001";

sel<='0';

endif;

endprocess;

endarchitecturebev;

 

程序流程图:

仿真波形图如下:

附录

LED显示灯(大板)

信号名称

对应FPGA引脚

D1_1

215

D1_2

217

D1_3

214

D1_4

207

D1_5

223

D1_6

213

D1_7

225

D1_8

224

D2_1

227

D2_2

226

D2_3

228

D2_4

233

D2_5

206

D2_6

234

D2_7

201

D2_8

203

拨挡开关模块(大板)

信号名称

对应FPGA引脚

K1

74

K2

73

K3

38

K4

39

K5

44

K6

45

K7

46

K8

83

按键模块(大板)

信号名称

对应FPGA引脚

S1

66

S2

67

S3

68

S4

79

S5

78

S6

77

S7

76

S8

75

S2

88

S3

87

七段码显示模块(大板)

信号名称

对应FPGA引脚

A

62

B

61

C

60

D

59

E

58

F

57

G

56

DP

55

SEL0

65

SEL1

64

SEL2

63

CLOCK(大板)

29

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2