fpga EDA技术实验指导书.docx
- 文档编号:1666118
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:52
- 大小:452.81KB
fpga EDA技术实验指导书.docx
《fpga EDA技术实验指导书.docx》由会员分享,可在线阅读,更多相关《fpga EDA技术实验指导书.docx(52页珍藏版)》请在冰点文库上搜索。
fpgaEDA技术实验指导书
EDA技术
实验指导书
张文希谢明华编写
周次
教学内容
2
简单逻辑电路实验
3
D触发器设计
4
1位二进制全加器设计
5
4位加法计数器
6
带有复位和时钟使能的十进制计数器
7
较复杂电路的原理图设计
10
数控分频器的设计
11
8位十六进制频率计设计
12
基于LPM_COUNTER的数控分频器设计
13
用状态机设计序列检测器的电路设计
长沙学院电子与通信工程系
2007年8月
目录
实验一简单逻辑电路实验1
实验二2选1多路选择器4
实验三D触发器设计5
实验四1位二进制全加器设计6
实验五4位加法计数器9
实验六7段数码显示译码器设计10
实验七带有复位和时钟使能的十进制计数器11
实验八带有并行置位的移位寄存器12
实验九较复杂电路的原理图设计13
实验十数控分频器的设计14
实验十一8位十六进制频率计设计15
实验十二基于LPM_COUNTER的数控分频器设计16
实验十三基于LPM_ROM的4位乘法器设计17
实验十四用状态机设计序列检测器的电路设计18
实验十五正弦信号发生器设计与LPM定制19
附录20
实验一简单逻辑电路实验
一、实验目的
1.学习Create-SOPC实验平台的使用方法;
2.熟悉QuartusII软件平台和使用VHDL语言设计电路的方法;
3.学习简单逻辑电路的设计、仿真和硬件测试。
二、实验内容
运用QuartusII集成环境下的VHDL文本设计方法设计半加器,进行波形仿真、引脚分配并下载到实验设备上进行逻辑功能验证。
三、实验步骤及参考程序
1.创建个人实验文件夹(最好使用英文字母命名不要用中文或数字名称)如:
D:
\example
2.运行QuartusⅡ软件。
3.创建一个VHDL设计文件:
File->New,在DeviceDesignFiles中选择VHDLFile。
在程序编辑窗输入VHDL程序并保存;在弹出对话框中输入文件名(必须和程序中实体名相同)并使下方小框内出现“√”,点击保存会弹出“是否创建新工程”提示信息如图1-1所示。
图1-1图1-2
4.创建一个新工程:
点击图1-1中“是”可进入创建工程向导(也可以File->NewprojectWizard进入向导),此时看到的默认工程名、顶层实体名都为h_adder(其中工程名可换名但顶层实体名必与编写的程序实体名一致),如图1-2。
点击NEXT,再在弹出窗中点击NEXT,选择目标器件:
Cyclone系列EP1C20F324C8芯片,如图1-3。
图1-3
5.编译:
选择Processing->StartCompilation命令,对此工程进行逻辑分析、综合适配、时序分析等。
如果设计正确则完全通过各种编译,如果有错误则根据报错信息返回h_adder.vhd进行修改,直至完全通过编译为止。
6.创建一个仿真波形文件:
File->New,在OtherFiles中选择VectorWaveformFile,如图1-4,进入波形编辑窗口。
图1-4图1-5
7.以扩展名为.VWF,文件名与编译的文件名相同,保存创建的仿真波形文件,如h_adder.vwf。
8.输入引脚:
Name栏中点击鼠标右键,选择“InsertNodeorBus”,在其对话框中点击“NodeFinder”按钮,弹出“NodeFinder”对话框,Named:
*;Filter:
Pin:
all,点击“List”,列出所有引脚,在其中选择需要仿真的引脚,如图1-5所示。
它们将在波形编辑窗口中出现。
图1-6图1-7
9.对所有input引脚赋初值(所有可能出现的信号组合状态都要求存在),对所有output引脚赋随机值后,保存仿真波形文件,如图1-6所示。
10.开始仿真:
选择Processing->StartSimulation若仿真没有出错,则在完成仿真后,可以看到仿真结果波形,观察输入、输出波形逻辑关系是否是与设计要求相符,波形仿真无误后进行下步操作。
11.选择Assignments->AssignmentsEditor,在AssignmentsEditor窗口中选择Pin标签页,再按下表分配引脚,如图1-7所示:
引脚名称
引脚编号
连接网络
引脚名称
引脚编号
连接网络
a
PIN_N14
KEY2
co
PIN_N15
LED2
b
PIN_V11
KEY3
so
PIN_U11
LED3
12.重编译:
选择Processing->StartCompilation命令,重新编译,完成后形成可配置到FPGA的h_adder.sof文件和配置到外部存储器的h_adder.pof文件。
13.编程下载:
使用Create-SOPC2000实验系统及SOPC开发板,将ByteBlasterII下载电缆插入SOPC开发板的JTAG下载接口中。
仔细检查确保接线无误后打开电源。
在QuartusII软件中,选择Tools/Programmer菜单,出现如图1-8所示的编程配置界面。
在”Mode”中选择JTAG,点击”AddFile”按钮添加需要配置的SOF文件,选中Program/Configure,点击”Start”按钮就可以对芯片进行配置。
14.测试:
配置完成后按动KEY2和KEY3,改变a、b的输入电平观察输出结果验证设计是否正确。
参考程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYh_adderIS
PORT(a,b:
INSTD_LOGIC;
co,so:
OUTSTD_LOGIC);
END;
ARCHITECTUREoneOFh_adderIS
BEGIN
so<=NOT(aXOR(NOTb));
co<=aANDb;
END;
四、实验扩展及思考
1.一位全加器VHDL文本输入设计;
2.改变输入、输出引脚编号,并测试逻辑功能。
实验二2选1多路选择器
一、实验目的
1.学习Create-SOPC实验平台的使用方法;
2.熟悉QuartusII软件平台和使用VHDL语言设计电路的方法;
3.掌握VHDL语言的基本语法和语句;
4.把握VHDL程序设计组合逻辑电路的基本结构和设计特点。
二、实验内容
运用QuartusII集成环境下的VHDL文本设计方法设计2选1多路选择器,进行波形仿真、引脚分配并下载到实验设备上进行逻辑功能测试。
三、实验步骤及参考程序
实验步骤和方法参考实验一,引脚分配可参考下表。
引脚名称
引脚编号
连接网络
引脚名称
引脚编号
连接网络
a
PIN_M3
FPGA_M1
q
PIN_R10
LED1
b
PIN_M4
FPGA_M2
sel
PIN_T10
KEY1
参考程序如下:
libraryieee;
useieee.std_logic_1164.all;
entitymux21ais
port(a,b,sel:
instd_logic;
q:
outstd_logic);
end;
architecturebehaveofmux21ais
begin
process(a,b,sel)
begin
ifsel='0'thenq<=a;
elseq<=b;
endif;
endprocess;
end;
四、实验扩展及思考
1.分析程序中的每一条语句的功能及特点;
2.采用多种描述方式表达出2选1多路选择器功能。
实验三D触发器设计
一、实验目的
1.熟悉QuartusII的VHDL文本设计简单时序电路的方法;
2.掌握时序电路的描述方法、波形仿真和测试,特别是时钟信号的特性。
二、实验内容
运用QuartusII集成环境下的VHDL文本设计方法设计简单时序电路——D触发器,依据D触发器的工作特性,进行波形仿真和分析、引脚分配并下载到实验设备上进行功能测试。
三、实验步骤及参考程序
实验步骤和方法参考实验一,引脚分配可参考下表。
引脚名称
引脚编号
连接网络
clk
PIN_T10
KEY1
d
PIN_M3
FPGA_M1
q
PIN_R10
LED1
参考程序如下:
libraryieee;
useieee.std_logic_1164.all;
entityDFF1is
port(clk:
instd_logic;
d:
instd_logic;
q:
outstd_logic);
end;
architecturebhvofDFF1is
signalq1:
std_logic;
begin
process(clk)
begin
ifclk’eventandclk=’1’
thenq1<=d;
endif;
q<=q1;
endprocess;
end;
四、实验扩展及思考
1.分析程序中的每一条语句的功能及特点;
2.试调整CLK频率,观看其波形仿真及测试情况;
3.试设计一锁存器并与D触发器进行比较。
实验四1位二进制全加器设计
一、实验目的
1.熟悉QuartusII集成环境的图形输入方法;
2.学会把设计项目成为可调用元件符号和调用元件的方法;
3.掌握同一工程中多个文件的编译、仿真方法。
二、实验内容
本实验首先使用图形输入的方法由逻辑门电路设计一个半加器,然后使用。
分别进行仿真、引脚分配并下载到电路板进行功能验证。
三、实验步骤
1.创建个人实验文件夹(最好使用英文字母命名不要用中文名称)。
2.运行QuartusII软件,选择File->New,在DeviceDesignFiles中选择BlockDiagram/SchematicFile,如图4-1所示,点击OK打开原理图编辑窗口。
图4-1图4-2
3.在图形编辑窗中双击鼠标左键,将弹出元件输入对话框,在对话框右栏打开元件库找到需要的元件,如图4-2所示,点击OK即可将元件调入原理图编辑窗。
将所有需要的元件都调入编辑窗。
4.将各个元件采用单击鼠标并拖动的方法连接号电路图,然后分别在input和output的pin_name上双击使变为黑色,再分别输入各引脚名,如图4-3所示。
图4-3
5.选择File—>SaveAs命令,选择为此工程已建好目录,将设计好的原理图文件取名为h_adder.bdf同时使下方小框内出现“√”,点击保存会弹出“是否创建新工程”提示信息如图4-4所示。
图4-4图4-5
6.创建一个新工程:
点击图4-4中“是”可进入创建工程向导(也可以File->NewprojectWizard进入向导),此时看到的默认工程名、顶层实体名都为h_adder,此时将工程名换为f_adder顶层实体名不变,如图4-5所示。
点击NEXT,再在弹出窗中点击NEXT,选择目标器件:
Cyclone系列EP1C20F324C8芯片。
按照实验一的方法完成半加器的编译、仿真。
7.将半加器设置成可调用的元件,在打开半加器原理图文件下,选择File—>Create/Update—>CreateSymbolFilesforCurrentFile命令,如图4-6所示。
此时半加器文件形成了一个符号元件可供高层次设计调用。
图4-6
8.建立全加器原理图。
与半加器原理图建立方法相同,选择File—>New进入编辑窗,双击编辑窗,弹出元件输入对话框,此时在对话框右栏顶上可以看到多了一个Project元件库,其中有一个元件,它就是前面生成的可供调用的半加器元件,如图4-7所示。
找到需要的元件,连接好全加器原理图,选择Project—>SetasTop-LevelEntity命令,将其设置为顶层文件,如图4-8所示。
图4-7
图4-8
图4-9
9.编译、仿真、编程下载和实验一基本相同,需要注意的是:
波形仿真时的波形文件名必须与图4-9所示的框中名称一样的.vwf文件。
引脚分配可参考下表。
引脚名称
引脚编号
连接网络
引脚名称
引脚编号
连接网络
ain
PIN_T10
KEY1
cout
PIN_N15
LED2
bin
PIN_N14
KEY2
sum
PIN_R10
LED1
cin
PIN_V11
KEY3
四、实验扩展及思考
1.VHDL和原理图结合设计
2.多位加法计数器的设计
实验五4位加法计数器
一、实验目的
1.掌握时钟信号、进程和BUFFER端口的运用;
2.了解计数器的设计、仿真和硬件测试,进一步熟悉VHDL语句、语法及应用等。
二、实验内容
运用QuartusII集成环境下的VHDL文本设计方法设计4位加法计数器,进行波形仿真和分析、引脚分配并下载到实验设备上进行功能测试。
三、实验步骤及参考程序
实验步骤和方法参考实验一,引脚分配可参考下表。
引脚名称
引脚编号
连接网络
引脚名称
引脚编号
连接网络
clk
PIN_T10
KEY1
q[2]
PIN_N15
LED2
q[0]
PIN_R11
LED4
q[3]
PIN_R10
LED1
q[1]
PIN_U11
LED3
参考程序如下:
entityCNT4is
port(clk:
inbit;
q:
bufferintegerrange15downto0);
end;
architecturebhvofCNT4is
begin
process(clk)
begin
ifclk'eventandclk='1'then
q<=q+1;
endif;
endprocess;
endbhv;
四、实验扩展及思考
1.分析程序中各语句的功能和特点;
2.比较各种端口类型以及如何应用;
3.试设计一个含异步清0和同步时钟使能的4位加法计数器。
实验六7段数码显示译码器设计
一、实验目的
1.熟悉进程和CASE语句的运用;
2.掌握译码的概念,掌握7段数码显示器的使用方法
3.进一步熟悉VHDL语句、语法。
二、实验内容
运用QuartusII集成环境下的VHDL文本设计方法设计7段数码显示译码器,要求将输入的4位二进制数进行译码,并在实验箱的7段数码管上显示对应的十六进制数值。
要求进行波形仿真和分析、引脚分配并下载到实验设备上进行功能测试。
三、实验步骤及参考程序
实验步骤和方法参考实验一,引脚分配可参考右图。
其中输入的二进制信号a用拔码开关输入,输出的
十六进制数值由数码管8显示(网络号:
E_7SEG_A8)
参考程序如下:
--7段数码显示程序设计
--程序包
libraryieee;
useieee.std_logic_1164.all;
--实体(所保存的文件名要为decl7s.vhd)
--如果该工程仅此一个程序文件,则工程名也为decl7s
entitydecl7sis
port(a:
instd_logic_vector(3downto0);--输入信号,表示4位二进制数
led_selout:
outstd_logic;--位选信号,选择实验箱上的7段数码管
led7s:
outstd_logic_vector(6downto0));--控制数码管7个段的亮和不亮
end;
--结构体,结构体的名字可以任取
architectureoneofdecl7sis
begin
--将led_selout置1,该信号可以绑定E_7SEG_A1到E_7SEG_A8范围的任一个数码管
led_selout<='1';
--进程语句,当输入信号a变化的时候,该进程所描述的电路工作
process(a)
begin
caseais
when"0000"=>led7s<="1000000";--0,数码管的G段不亮,显示为0
when"0001"=>led7s<="1111001";--1
when"0010"=>led7s<="0100100";--2
when"0011"=>led7s<="0110000";--3
when"0100"=>led7s<="0011001";--4
when"0101"=>led7s<="0010010";--5
when"0110"=>led7s<="0000010";--6
when"0111"=>led7s<="1111000";--7
when"1000"=>led7s<="0000000";--8
when"1001"=>led7s<="0010000";--9
when"1010"=>led7s<="0001000";--A
when"1011"=>led7s<="0000011";--B
when"1100"=>led7s<="1000110";--C
when"1101"=>led7s<="0100001";--D
when"1110"=>led7s<="0000110";--E
when"1111"=>led7s<="0001110";--F
whenothers=>null;
endcase;
endprocess;
end;
四、实验扩展及思考
1、思考如何用多个数码管同时显示该数值。
2、结合试验五,显示试验五中的加法计算的结果。
实验七带有复位和时钟使能的十进制计数器
一、实验目的
1.熟悉进程和signal的运用;
2.进一步熟悉7段数码显示器的使用方法;
3.进一步熟悉VHDL语句、语法。
二、实验内容
运用QuartusII集成环境下的VHDL文本设计方法设计带有复位和时钟使能的十进制计数器,要求对输入的脉冲信号进行计数,并在实验箱的7段数码管上显示对应的十六进制计数值。
要求具有复位和使能功能,并能输出进位信号。
进行波形仿真和分析、引脚分配并下载到实验设备上进行功能测试。
三、实验步骤及参考程序
实验步骤和方法参考实验一,引脚分配可参考右图。
参考程序:
--引用
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
--实体
entitycnt10is
port(clk,rst,en:
instd_logic;--rst:
复位;
led7s:
outstd_logic_vector(7downto0);
cout:
outstd_logic);--进位信号
end;
--结构体
architecturebhhofcnt10is
signalcq:
std_logic_vector(3downto0);
begin
--clk上升沿计数
process(clk,rst,en)
variablecqi:
std_logic_vector(3downto0);
begin
--复位
ifrst='1'then
cqi:
=(others=>'0');
--en为高电平时候计数
elsifclk'eventandclk='1'then
ifen='1'then
ifcqi<9then
cqi:
=cqi+1;
else
cqi:
=(others=>'0');
endif;
endif;
endif;
--进位
ifcqi=9then
cout<='1';
else
cout<='0';
endif;
cq<=cqi;
endprocess;
--当十进制的计数结果cq变化时,将其译为7段码显示
process(cq)
begin
casecqis
--第8位为数码管使能位
--低7位控制7段数码管,从低位到高位依次为ABCDEFG段
when"0000"=>led7s<="11000000";--0,数码管的G段不亮,显示为0
when"0001"=>led7s<="11111001";--1
when"0010"=>led7s<="10100100";--2
when"0011"=>led7s<="10110000";--3
when"0100"=>led7s<="10011001";--4
when"0101"=>led7s<="10010010";--5
when"0110"=>led7s<="10000010";--6
when"0111"=>led7s<="11111000";--7
when"1000"=>led7s<="10000000";--8
when"1001"=>led7s<="10010000";--9
when"1010"=>led7s<="10001000";--A
when"1011"=>led7s<="10000011";--B
when"1100"=>led7s<="11000110";--C
when"1101"=>led7s<="10100001";--D
when"1110"=>led7s<="10000110";--E
when"1111"=>led7s<="10001110";--F
whenothers=>null;
endcase;
endprocess;
end;
波形图:
四、实验扩展及思考
1、思考十六进制计数器的设计方法
实验八带有并行置位的移位寄存器
一、实验目的
1.学习移位寄存器的设计方法;
2.进一步熟悉VHDL语句、语法。
二、实验内容
运用QuartusII集成环境下的VHDL文本设计方法设计带有并行置位的移位寄存器,要求具有置位功能。
进行波形仿真和分析、引脚分配并下载到实验设备上进行功能测试。
三、实验步骤及参考程序
实验步骤和方法参考实验一,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- fpga EDA技术实验指导书 EDA 技术 实验 指导书