点亮发光二极管.docx
《点亮发光二极管.docx》由会员分享,可在线阅读,更多相关《点亮发光二极管.docx(11页珍藏版)》请在冰豆网上搜索。
点亮发光二极管
EDA实验单元1
FPGA器件为用户提供了数量较多的灵活独立的输入/输岀I/O口,FPGA的每个I/O口可
以配置为输入、输岀、双向I/O、集电极开路和三态门等各种状态。
作为输岀口使用时FPGA的
I/O口可以输岀最大40mA的电流,可以直接驱动发光二极管LED等硬件。
FreeDev系列开发
板配置了4〜8个LED和4位的数码管等器件,我们安排下列实验可以让用户感受和熟悉FPGA
的开发过程,学习QuartusII开发工具的使用方法和VerilogHDL语言的编程方法。
点亮发光二极管
1.要求
点亮FreeDev开发板上的8个发光二极管,通过此实验让用户逐步了解、熟悉和掌握
FPGA开发软件QuartusII的使用方法及VerilogHDL编程方法。
2.分析
FreeDev开发板为用户准备了8个发光二极管,其原理图见下图:
SW1
严讯単L,
[RDK]仆単弭讯一単吒刖{)単、§|{)
単耳_』1{)
标号LEDO〜LED7分别连接到FPGA的I/O引脚(具体引脚对应表见后),只要正确分配并锁定引脚后,在相应的引脚上输岀高电平“1”,就可以实现点亮该发光二
极管的功能。
3.程序设计
要求实现点亮LED发光二极管,因此只须在相应的引脚上输岀高电平“1”即可,
完整的VerilogHDL程序如下(两种实现方法,二选一即可):
⑴禾U用assign语句实现,文件名led.v。
moduleled(ledout);//模块名ledoutput[7:
0]ledout;//定义输岀口
assignledout=8'01010101;//输岀0x55
endmodule
(2)利用过程赋值语句来实现,文件名led2.v。
moduleled(ledout);//模块名led
output[7:
0]ledout;//定义输岀口
NewProjectWizard:
Directory^iName,Top-LevelEntity[page1of5]
X]
Whatistheworkingdirectoryforthisproject?
|DAEDAEXAMPLE\led\led
Whatisthenameofthisproject?
1^
WhatisthenameofthelQp-leveldesignentityfo(thisproject?
Thisnamei$w$esensitiveandmustexactlymatchtheentitynameinthedesignfile.
R
■J
UseExisbinQProjectSetting...
€Bajck
N«xt>
Finish
职消
在上图中我们点击••把顶层模块led.v加入进来
Next进入下一步
Selectthefamily-anddevceyouwanltotarget(orcompilation
Eamily:
|Cyclane三|
Targetdevice
CAutodeviceselectedbytheFiUer
aSpecificdeviceselectedin'Availabledevice^'list
Availabledevices:
臣ShowAdvancedDevices
Name
LEs
|Memar...
JPLL|
3
EP1C6F256C6
5980
92160
2
EP1CSF256C7
5980
92160
2
EP1C6F256Ce
5990
92160
2
_i
EP1CEF2507
5990
92160
2
EP1C6Q240C6
5930
92160
2
EP1C6Q240C7
5A80
92160
2
B
[EP1C6Q240C8
5980
92160
Campeniondevrce|
HardEapy(I:
T|
PLimitDSPtRAMtoHatdCopyIIdeviceresources
Next>
Finish.
取消
在这一步中,选择FPGA器件,上图在FreeDev2_1开发板上我们选EP1C6Q240C8
最后,我们点击Finish。
结束工程向导。
遞印匕0hvgpc^Wt涉stjmnt!
也[ocfe出冋tnv出巾
assignlEdDut-8'01010101;
enctaodule
PINTOPIN兼容,在PCB设计时综合考虑了
FreeDev系列开发板的为提供多种FPGA器件
诸如EP1C6和EP1C12的兼容,所以很重要的一步:
在工程创建完成后,需要设置不使用引脚
/EDAEXAMPLE/led/led/led-led-[../led**]
ProjectNavigator
|Entity
在Setting->Device表单中点击下图的Device&PinOption
按下图设置UnusedPins为Asinputtri-stated
Device&PinOptions
凶
CuiL-?
urposcFins|Voltage|Fin?
14cement
ErrorBetectionCSC|CapacitiveLoading
GeneralCcnficurationFrograimingFilesUnusedPins
Specifydevice-wideoptionshrreservingallunusedpintsonthedevice.Toreserveindividualdjal-purooseconfiaurationDins.aototheDual-PurQOs&Pinstab.Toreserveotherpinsindividually,usetheAssignmentEditor.
(4)引脚锁定
引脚定义方法一:
点击菜单Assignment->Pins打开PinPlanner。
因为在顶层模块led.v中定义8位的输岀I/O口(output[7:
0]ledout;),所以在Pin
Planner的nodename中输入ledout[0]~ledout[7]。
在PinPlanner的Location
中选择输入对应的引脚号。
示例见下图:
X
JNamed«丁
AllPhs
NodeName
Direction
Location
2
令ledout[l]
Unknown
PIM104
斗
3
◎ledout[2]
Udoiown
PIN」U5
4
4
◊ledaut[3]
Unknown
PIN106
4
5
令ledout[4]
Unknown
PINI1Q7
4
6
令ledout[5]
Unknown
PINJOS
4
7
[6]
Unknown
PIN_113
斗
8
令[7]
Unknown
P1N_114
斗
9
«r\ewnode»
.£Q
J
■:
:
••:
:
..m..:
:
.y:
..:
..:
:
..:
:
..:
:
..:
:
..:
..:
:
...:
:
..:
:
.上:
引脚定义方法
FreeDev系列开发板的光盘上都会提供一个FreeDev.tcl的脚本文件,把该文件拷贝到
我们创建的工程目录下。
点击tools->tclscripts••打开tclscript窗口,选择
FreeDev.tcl,然后点击Run运行脚本命令文件。
见下图:
TdScripts
凶
Run
Preview:
set_
location_
_assignment
PIN_
153
-to
CLK
jk.
set
Location
assigriment
PIN^
152
-to
RESET
set_
location_
_assigmment
PltT
1*4
-to
SDRAM_CLK
set
Location
assigriment
PIN
179
-to
RXO
set_
location_
_assigmnent
PIN^
131
-to
RX1
set_
Location_
"asslgniiient
pm~
1B0
-to
TXO
曰皀匸
loca匸ion
assigmnent
pin"
182
-七o
TX1
J
使用tcl脚本文件,需要注意模块信号和脚本中信号名定义要一致。
(5)编译
►I
点击菜单Processing->StartCompilation或快捷键启动编译
¥工HtcHCamLULj!
quaEtuji_tan.—Etiiid_3ettiDij-5_Eiles-ote--wtitje_SEtT.i™js_tilE5"SInfo:
OusecubIITlalngAn41^se£mssucctfl-Bful.0etK0X4r1s&tninf
QTfilu\QuaiEuaITFullrobpilaclariwaautcejsCul.□eiEOES^11口aedIdijs
Mmage5(m96
PcrlHelbpressP]
r%*»■
11
电1中芈冃“,|
酉33OC.,]
创点磁..,|肝无缶S..||住阿tu”
I(S
団
a」嗥花岂召牛■習16:
16
编译有错误,则找岀并更正错误,直至编译成功
(6)下载测试
点击快捷键I启动下载,点击start启动jtag方式下载。
我们就可以在开发板上看到效果了。