讲义.docx
- 文档编号:12669659
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:51
- 大小:1.66MB
讲义.docx
《讲义.docx》由会员分享,可在线阅读,更多相关《讲义.docx(51页珍藏版)》请在冰豆网上搜索。
讲义
第1章ISE9.2安装
第1步:
将ISE9.2DVD光盘装入光驱,自启动后出现figure1画面,点击Next按钮。
figure1
第2步:
输入注册ID号码1313-3270-6238-2237,点击Next按钮。
figure2
第3步:
出现下图后,选中Iacceptthetermsofthissoftwarelicense,Next按钮有效,点击Next按钮。
figure3
第4步:
选中Iacceptthetermsofthissoftwarelicense,Next按钮有效,点击Next按钮。
figure4
第5步:
选中Iacceptthetermsofthissoftwarelicense,Next按钮有效,点击Next按钮。
figure5
第6步:
输入硬盘上的安装目录,然后点击Next按钮。
figure6
第7步:
选择需要安装的XILINXFPGA类型,如果不能确定的话,就全部选中。
然后点击Next按钮。
figure7
第8步:
环境变量设置,全部选中,然后点击Next按钮。
figure8
第9步:
选择webupdate然后点击Next按钮。
Figure9
第10步:
点击Next按钮,开始安装ISE软件。
figure10
第11步:
安装过程大约需要30分钟。
figure11
第12步:
如果出现webupdate则选择cancel结束更新,然后点击ok按钮安装完成。
figure12
第2章在ISE上用VHDL设计D触发器
实验目的:
●了解ISE开发环境;
●了解VHDL结构和组成。
实验内容:
第1步:
进入ISE环境,即执行所有程序/xilinxISE9.2i/ProjectNavigator。
figure13
第2步:
执行File/NewProject…,创建一个新工程。
输入工程名字lab1,该工程保存在D:
\labs\lab1中,设计方法使用HDL完成。
figure14
第3步:
选择FPGA器件,spartan3E系列中的xc3s500e器件封装为FG320速度-4。
综合工具选择XST,仿真工具选择ISESimulator,语言使用VHDL。
点击下一步按钮。
figure15
第4步:
点击NewSource按钮创建一个新源程序。
figure16
第5步:
选择源程序类型为VHDLModule,输入源程序的文件名lab。
figure17
第6步:
对源程序所定制的器件的输入和输出信号进行定义。
clk一位输入信号,
switch四位输入信号,
button四位输入信号,
led八位输出信号。
点击下一步按钮。
figure18
第7步:
对源程序所定义的器件情况进行列表。
Figure19
第8步:
对所定义的器件列表显示。
figure20
第9步:
是否增加已有的源文件。
不增加,下一步。
figure21
第10步:
对所定义的工程情况列表显示,点击结束按钮。
figure22
第11步:
进入工程主界面。
在begin后添加器件的定义,使用一个进程process。
a:
process(clk)
begin
ifrising_edge(clk)then
led(3downto0)<=switch;
led(7downto4)<=button;
endif;
endprocess;
第12步:
在processess列表框中,UserConstraints目录下用鼠标双击EditConstraints,编辑约束文件,输入如下约束条件:
NET"clk"LOC="C9"|IOSTANDARD=LVCMOS33;
NET"clk"PERIOD=20.0nsHIGH40%;
NET"button<0>"LOC="H13"|IOSTANDARD=LVTTL|PULLDOWN;
NET"button<1>"LOC="K17"|IOSTANDARD=LVTTL|PULLDOWN;
NET"button<2>"LOC="D18"|IOSTANDARD=LVTTL|PULLDOWN;
NET"button<3>"LOC="V4"|IOSTANDARD=LVTTL|PULLDOWN;
NET"switch<0>"LOC="L13"|IOSTANDARD=LVTTL|PULLUP;
NET"switch<1>"LOC="L14"|IOSTANDARD=LVTTL|PULLUP;
NET"switch<2>"LOC="H18"|IOSTANDARD=LVTTL|PULLUP;
NET"switch<3>"LOC="N17"|IOSTANDARD=LVTTL|PULLUP;
NET"led<7>"LOC="F9"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;
NET"led<6>"LOC="E9"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;
NET"led<5>"LOC="D11"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;
NET"led<4>"LOC="C11"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;
NET"led<3>"LOC="F11"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;
NET"led<2>"LOC="E11"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;
NET"led<1>"LOC="E12"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;
NET"led<0>"LOC="F12"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;
第13步:
在processess列表框中用鼠标选中Synthesize–XST,点击鼠标右键,执行Run开始综合过程。
综合进程将在ISE最下面列表框有提示。
如果综合正确则在Synthesize–XST前面有对钩提示。
figure23
第14步:
在processess列表框中用鼠标选中ImplementDesign,点击鼠标右键,执行Run开始网表转换、映射、布局布线过程。
网表转换、映射、布局布线过程将在ISE最下面列表框有提示。
如果正确则在ImplementDesign前面有对钩提示。
第15步:
在processess列表框中用鼠标选中GenerateProgrammingFile,点击鼠标右键,执行Run开始产生配置文件。
产生过程将在ISE最下面列表框有提示。
如果正确则在GenerateProgrammingFile前面有对钩提示,同时弹出xilinxwebtalkdialog对话框,选择decline。
然后选择不发送器件列表情况,点击ok按钮。
自此完成在ISE上用VHDL完成一个简单的D触发器设计过程。
figure24
第3章XILINXUSB下载线驱动安装
适用于windowsxp下使用。
第1步:
将USB下载线插入计算机,则自动识别出新增硬件设备,选择否,暂时不按钮,然后下一步。
figure25
第2步:
选择自动安装软件,然后下一步。
figure26
第3步:
安装驱动过程,然后显示usbfirmwareloader驱动安装完成。
figure27
第4步:
再次出现自动识别出新增硬件设备,选择否,暂时不按钮,然后下一步。
figure28
第5步:
选择自动安装软件,然后下一步。
figure29
第6步:
安装驱动过程,然后显示usbcable驱动安装完成。
figure30
第7步:
第三次出现自动识别出新增硬件设备,选择否,暂时不按钮,然后下一步。
figure31
第8步:
选择自动安装软件,然后下一步。
figure32
第9步:
安装驱动过程,然后显示usbcable驱动安装完成。
经过三次驱动安装,完成全部驱动安装工作,下载线可以使用。
figure33
第10步:
安装完后打开设备管理器,则可以看到出现programmingcables中有xilinxusbcables设备,可证明驱动安装正确。
figure34
第4章程序下载流程
第1步:
执行开始\所有程序\xilinxISE9.2i\Accessories\iMPACT,出现iMPACTProject对话框,选择creatanewproject,然后点击ok按钮。
figure35
第2步:
在welcometoiMPACT中选中configuredevicesusingboundary-scan(jtag),然后执行finish按钮。
Figure36
第3步:
上载板卡边界扫描到的器件,将需要下载的器件选择对应的设计文件。
点击该元件后用鼠标右键显示列表,选择assignnewconfigurationfile来打开选择设计文件对话框。
figure37
第4步:
fpga的下载文件格式是bit文件,platformflash的下载文件是mcs文件,cpld的下载文件格式是jed文件。
注意千万别更新CPLD元件的文件。
Figure38
第5步:
在元件下将显示出将被下载的文件名。
再次点击该元件后用鼠标右键显示列表,选择program。
figure39
第6步:
什么也不选,点击ok按钮。
figure40
第7步:
出现下载成功后,将设计文件下载到FPGA中。
figure41
第5章拨码开关控制灯亮灭实验
实验目的:
●在SP3ESTART开发板上,通过拨码开关使发光二极管亮灭;
●熟悉ISE开发环境,了解组合逻辑实现。
●了解功能仿真和时序仿真方法。
设计思路:
figure42
LED0-LED7:
高电平时灯亮,低电平时灯灭。
figure43
Switch:
通过拨码调整高低电平变换。
Button:
一端与高电平相接,另一端与FPGA相接。
figure44
figure45
figure46
实验计划:
第1个学时:
●实验目的、实验步骤和实验设备介绍。
●画出原理图。
●启动ISE创建一个工程。
●用VHDL实现原理图的设计,观看原理图比较。
●管脚约束。
●综合、布局和布线。
第2个学时:
●功能仿真。
●时序仿真。
第3个学时:
●实验调试。
●写实验报告。
思考题:
为什么使用D触发器实现要比与门、非门或者或门要好一些?
功能仿真与时序仿真之间有什么不同?
实验内容:
第1步:
将第2章设计的程序拷贝到另一个文件夹lab2中。
第2步:
建立一个功能仿真文件。
用鼠标选中Sources中的lab文件,点击鼠标右键选择NewSource,打开新增文件向导。
选中VHDLtestbench,文件名为aaa,给lab器件添加一个功能仿真文件。
第3步:
在功能仿真文件中定义所有输入信号。
tb进程为时钟clk定义:
tb:
PROCESS
BEGIN
clk<='1';
waitfor10ns;
clk<='0';
waitfor10ns;
ENDPROCESS;
tc进程为switch定义:
tc:
PROCESS
BEGIN
switch<="0000";
waitfor100ns;
switch<="1111";
wait;
ENDPROCESS;
td进程为button定义:
td:
PROCESS
BEGIN
button<="1010";
waitfor100ns;
button<="0101";
waitfor100ns;
ENDPROCESS;
第4步:
在Sources窗口sourcesfor列表框中将synthesis/Implement更改为Behavioralsimulation。
在processes中展开xilinxisesimulator。
选中simulateBehavioralmodel点击鼠标右键,运行run命令,开始进行功能仿真。
第5步:
在功能仿真中,调整仿真时间和对断点检测,更改功能仿真文件的三个输入信号进程来进行仿真比较。
第6步:
建立一个时序仿真。
仍然使用功能仿真中建立的输入信号文件aaa。
第7步:
在Sources窗口sourcesfor列表框中将synthesis/Implement更改为Post-routesimulation。
在processes中展开xilinxisesimulator。
选中simulatePost-place&Routemodel点击鼠标右键,运行run命令,开始进行时序仿真。
figure48
第8步:
请仔细观察功能仿真与时序仿真结果的不同点,分析为什么产生不同。
对实际设计中重要作用。
第9步:
将设计配置文件下载到FPGA中去,调试实验结果。
第6章时序逻辑:
分频器的实现
实验目的:
●在SP3ESTART开发板上,通过分频器实现,来了解时序逻辑。
●熟悉ISE开发环境;
●掌握功能仿真和时序仿真方法。
设计思路:
通过拨码开关设置分频倍数,通过示波器查看输出脉冲频率,验证分频正确。
通过开发板J1接线口的第1口输出脉冲信号,第5口是数字地。
实验计划:
第1个学时:
●实验目的、实验步骤和实验设备介绍。
●时序逻辑:
分频器。
●建立一个工程实现任意分频。
第2个学时:
●查看原理图转化显示。
●使用功能仿真和时序仿真对结果进行比较。
●更改分频倍数进行观察。
●用示波器观察分频是否正确。
第3个学时:
●写实验报告。
源代码清单:
entitylabis
Port(clk:
inSTD_LOGIC;
switch:
inSTD_LOGIC_VECTOR(3downto0);
output:
outSTD_LOGIC);
endlab;
architectureBehavioraloflabis
signalt,z:
std_logic;
signalphase:
STD_LOGIC_VECTOR(39downto0);
signalm:
integerrange0to15;
signaln:
integerrange0to31;
begin
--分频输出,脉冲信号,脉宽为10个晶振周期。
H:
process(clk)
variableq:
integerrange0to100;
begin
ifrising_edge(clk)then
ifq<8then
q:
=q+1;
t<='1';
elsifq<(n-1)then
q:
=q+1;
t<='0';
else
q:
=0;
t<='0';
endif;
endif;
endprocess;
--将整数加10,提高分频倍数。
n<=m+10;
--将拨码开关输入“0000”-“1111”转换为整数表示
m<=conv_integer(switch);
--输出
output<=t;
endBehavioral;
约束文件:
NET"clk"LOC="C9"|IOSTANDARD=LVCMOS33;
NET"clk"PERIOD=20.0nsHIGH40%;
NET"switch<0>"LOC="L13"|IOSTANDARD=LVTTL|PULLUP;
NET"switch<1>"LOC="L14"|IOSTANDARD=LVTTL|PULLUP;
NET"switch<2>"LOC="H18"|IOSTANDARD=LVTTL|PULLUP;
NET"switch<3>"LOC="N17"|IOSTANDARD=LVTTL|PULLUP;
NET"output"LOC="B4"|IOSTANDARD=LVCMOS33|SLEW=FAST|DRIVE=8;
思考题:
脉冲信号输出,约束文件SLEW表示压摆率,考虑SLEW设置为FAST是否合适?
什么情况下可以设置为FAST?
三种板卡脉冲输出的波形不同,是什么原因造成的呢?
第7章IP核使用
实验目的:
●掌握IP核的使用方法。
设计思路:
在分频基础上,增加时钟管理的IP核,保证片内获得稳定的100MHz时钟频率。
实验计划:
第1个学时:
●实验目的、实验步骤和实验设备介绍。
●IP核介绍。
●建立一个工程实现利用DCM任意分频。
第2个学时:
●查看原理图转化显示。
●使用功能仿真和时序仿真对结果进行比较。
●更改分频倍数进行观察。
●用示波器观察分频是否正确。
第3个学时:
●写实验报告。
实验步骤:
第1步:
在分频建立工程基础上,填加1个新文件,新文件类型为IPCore,名字定为Mydcm。
ISE提供了很多免费IP核,选择FPGAFeaturesandDesign/Clocking/Spartan-3ESpartan-3A/SingleDCMSPv9.1i。
第2步:
在时钟管理设置界面中,取消RST选项,外界时钟输入为50MHz,选中CLK2X。
可以闭环控制合成输出1倍和2倍输入频率。
第3步:
回到在ISE工程界面,会出现Mydcm的时钟管理单元。
在processes中鼠标双击viewHDLInstantantiationTemplate。
内容上半部分如下:
COMPONENTMydcm
PORT(
CLKIN_IN:
INstd_logic;
CLKIN_IBUFG_OUT:
OUTstd_logic;
CLK0_OUT:
OUTstd_logic;
CLK2X_OUT:
OUTstd_logic;
LOCKED_OUT:
OUTstd_logic
);
ENDCOMPONENT;
将它拷贝到lab.vhd文件的architectureBehavioraloflabis和begin之间,对时钟模块进行定义。
第4步:
Mydcm的viewHDLInstantantiationTemplate内容下半部分如下:
Inst_Mydcm:
MydcmPORTMAP(
CLKIN_IN=>,
CLKIN_IBUFG_OUT=>,
CLK0_OUT=>,
CLK2X_OUT=>,
LOCKED_OUT=>
);
第5步:
在lab.vhd文件的architectureBehavioraloflabis后面增加新信号定义:
signalclkb,clk0,clk2x,lock:
std_logic;
第6步:
将新定义的信号填加到Mydcm中去:
Inst_Mydcm:
MydcmPORTMAP(
CLKIN_IN=>clk,
CLKIN_IBUFG_OUT=>clkb,
CLK0_OUT=>clk0,
CLK2X_OUT=>clk2x,
LOCKED_OUT=>lock
);
第7步:
将获得的新的时钟信号clkb,clk0,clk2x分别替换原来分频设计中的clk信号。
例如使用clk0和clk2x作为基准时钟信号,通过仿真进行比较分析不同时钟的异同点。
第8步:
下载到板卡中通过示波器对比分析。
源代码清单:
entitylabis
Port(clk:
inSTD_LOGIC;
switch:
inSTD_LOGIC_VECTOR(3downto0);
output:
outSTD_LOGIC);
endlab;
architectureBehavioraloflabis
signalt,z:
std_logic;
signalphase:
STD_LOGIC_VECTOR(39downto0);
signalm:
integerrange0to15;
signaln:
integerrange0to31;
signalclkb,clk0,clk2x,lock:
std_logic;
COMPONENTMydcm
PORT(
CLKIN_IN:
INstd_logic;
CLKIN_IBUFG_OUT:
OUTstd_logic;
CLK0_OUT:
OUTstd_logic;
CLK2X_OUT:
OUTstd_logic;
LOCKED_OUT:
OUTstd_logic
);
ENDCOMPONENT;
begin
Inst_Mydcm:
MydcmPORTMAP(
CLKIN_IN=>clk,
CLKIN_IBUFG_OUT=>clkb,
CLK0_OUT=>clk0,
CLK2X_OUT=>clk2x,
LOCKED_OUT=>lock
);
--分频输出,脉冲信号,脉宽为10个晶振周期。
H:
process(clk2x)
variableq:
integerrange0to100;
begin
ifrising_edge(clk2x)then
ifq<8then
q:
=q+1;
t<='1';
elsifq<(n-1)then
q:
=q+1;
t<='0';
else
q:
=0;
t<='0';
endif;
endif;
endprocess;
--将整数加10,提高分频倍数。
n<=m+10;
--将拨码开关输入“0000”-“1111”转换为整数表示
m<=conv_integer(switch);
--输出
out
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 讲义
![提示](https://static.bdocx.com/images/bang_tan.gif)