Professional Documents
Culture Documents
Module5fpgadesign PDF
Module5fpgadesign PDF
Module5fpgadesign PDF
AltiumDesignerTrainingModule
FPGADesign
DocumentVersion1.2,February2008
Software,documentationandrelatedmaterials:
Copyright2008AltiumLimited.
Allrightsreserved.Youarepermittedtoprintthisdocumentprovidedthat(1)theuseofsuchisfor
personaluseonlyandwillnotbecopiedorpostedonanynetworkcomputerorbroadcastinany
media,and(2)nomodificationsofthedocumentismade.Unauthorizedduplication,inwholeorpart,
ofthisdocumentbyanymeans,mechanicalorelectronic,includingtranslationintoanother
language,exceptforbriefexcerptsinpublishedreviews,isprohibitedwithouttheexpresswritten
permissionofAltiumLimited.Unauthorizedduplicationofthisworkmayalsobeprohibitedbylocal
statute.Violatorsmaybesubjecttobothcriminalandcivilpenalties,includingfinesand/or
imprisonment.
Altium,AltiumDesigner,BoardInsight,CAMtastic,CircuitStudio,DesignExplorer,DXP,LiveDesign,
NanoBoard,NanoTalk,Nexar,nVisage,PCAD,Protel,SimCode,Situs,TASKING,andTopological
AutoroutingandtheirrespectivelogosaretrademarksorregisteredtrademarksofAltiumLimitedor
itssubsidiaries.
Microsoft,MicrosoftWindowsandMicrosoftAccessareregisteredtrademarksofMicrosoft
Corporation.OrCAD,OrCADCapture,OrCADLayoutandSPECCTRAareregisteredtrademarksof
CadenceDesignSystemsInc.AutoCADisaregisteredtrademarkofAutoDeskInc.HPGLisa
registeredtrademarkofHewlettPackardCorporation.PostScriptisaregisteredtrademarkofAdobe
Systems,Inc.Allotherregisteredorunregisteredtrademarksreferencedhereinarethepropertyof
theirrespectiveownersandnotrademarkrightstothesameareclaimed.
Module1
ii
AltiumDesignerTrainingModule
FPGADesign
FPGADesignBasics
1
FPGADesign......................................................................................................... 11
1.1
Learningobjectives..................................................................................... 11
1.2
Topicoutline............................................................................................... 11
IntroductiontoFPGADesign ............................................................................... 12
2.1
FPGAbasics .............................................................................................. 12
CreatinganFPGAproject..................................................................................... 13
3.1
Overview.................................................................................................... 13
3.2
Aquickwordaboutprojectsanddesignworkspaces................................... 13
3.3
FPGAproject.............................................................................................. 14
FPGAschematicconnectivity.............................................................................. 15
4.1
Overview.................................................................................................... 15
4.2
Wiringthedesign........................................................................................ 15
4.3
IncludingHDLsourcefilesinaschematic................................................... 15
4.4
Establishingconnectivitybetweendocuments............................................. 15
4.5
Usingbusesandbusjoiners....................................................................... 16
FPGAreadyschematiccomponents ................................................................... 19
5.1
Overview.................................................................................................... 19
5.2
Processorcores ......................................................................................... 19
5.3
DesktopNanoBoardportplugins .............................................................. 110
5.4
PeripheralComponents ............................................................................ 110
5.5
Genericcomponents ................................................................................ 110
5.6
Vendormacroandprimitivelibraries......................................................... 110
5.7
Exercise1CreateaPWM...................................................................... 111
Targetingthedesign........................................................................................... 113
6.1
Constraintfiles ......................................................................................... 113
6.2
Configurations .......................................................................................... 114
6.3
NanoBoardconstraintfiles........................................................................ 114
6.4
ConfigurationManager ............................................................................. 114
6.5
AutoConfiguringanFPGAproject ............................................................ 115
6.6
Definingconstraintsmanually ................................................................... 115
6.7
Editingaconstraintfile.............................................................................. 116
6.8
Exercise2ConfiguringMyPWM............................................................. 117
AltiumDesignerTrainingModule
8.6
8.7
8.8
8.9
8.10
8.11
8.12
FPGADesign
IOB_x....................................................................................................... 128
DIGITAL_IO ............................................................................................. 128
LAX_x ...................................................................................................... 129
TerminalConsole ..................................................................................... 131
Exercise4AUsingembeddedinstruments............................................. 131
WherearetheInstruments?..................................................................... 135
Enablingembeddedinstruments............................................................... 135
10
Creatingacorecomponent................................................................................ 143
10.1 Coreproject.............................................................................................. 143
10.2 CreatingacorecomponentfromanFPGAproject .................................... 143
10.3 AwordaboutEDIF ................................................................................... 144
10.4 Settingupthecoreproject ........................................................................ 144
10.5 Constrain/configure ................................................................................ 145
10.6 Creatinganewconstraintfile.................................................................... 146
10.7 Creatingaconfiguration............................................................................ 147
10.8 Synthesize............................................................................................... 148
10.9 Publish ..................................................................................................... 149
10.10 Creatingacoreschematicsymbol ............................................................ 149
10.11 Usingacorecomponent........................................................................... 151
10.12 Exercise5CreateacorecomponentfromMyPWM ............................... 152
11
FPGAdesignsimulation..................................................................................... 153
11.1 Creatingatestbench................................................................................ 153
11.2 AssigningtheTestbenchDocument.......................................................... 153
11.3 Initiatingasimulationsession ................................................................... 154
11.4 Projectcompileorder................................................................................ 154
11.5 Settingupthesimulationdisplay............................................................... 155
11.6 Runninganddebuggingasimulation ........................................................ 156
11.7 Exercise6CreateatestbenchandsimulateMyPWM ............................ 158
12
Review................................................................................................................. 159
ii
AltiumDesignerTrainingModule
FPGADesign
1 FPGADesign
Theprimaryobjectiveofthisdayoftrainingistomakeparticipantsproficientintheprocessof
developing,downloadingandrunninganFPGAdesignontheDesktopNanoBoard.Wewillgo
throughtheFPGAdesignframeworkanddemonstratejusthowsimpleFPGAdesigniswithAltium
Designer.
1.1
Learningobjectives
TobecompetentindevelopingFPGAdesignsusingstandardFPGAbasedlibrariesandthe
schematiccaptureenvironment
TounderstandandbeabletomakeuseoftheFPGAbuildprocess
TobefamiliarwiththeperipheralcapabilitiesoftheDesktopNanoBoardandknowhowto
incorporatetheiruseincustomFPGAdesigns.
Toappreciatethedifferentcommunicationmechanismsusedbythesoftwaretocontrolandprobe
arunningFPGAdesign.
TobecompetentwiththeuseofvirtualinstrumentsinanFPGAdesign.
1.2
Topicoutline
CoreTopics
FPGA
Project
Creation
FPGA
Schematic
Extensions
FPGABuild
Process
FPGAdesign
builtand
loadedonto
NanoBoard
NanoBoard
Concepts
FPGA
Instruments
AdvancedTopics(TimePermitting)
FPGACore
Components
Digital
Simulation
.
Figure1.TopicOutlineforPartIFPGADesignBasics.
11
AltiumDesignerTrainingModule
FPGADesign
2 IntroductiontoFPGADesign
2.1
FPGAbasics
FPGA:FieldProgrammableGateArray.Conceptuallyitcanbeconsideredasanarrayof
ConfigurableLogicBlocks(CLBs)thatcanbeconnectedtogetherthroughavastinterconnection
matrixtoformcomplexdigitalcircuits.
Figure2.ExplodedviewofatypicalFPGA
FPGAshavetraditionallyfounduseinhighspeedcustomdigitalapplicationswheredesignstendto
bemoreconstrainedbyperformanceratherthancost.Theexplosionofintegrationandreductionin
pricehasledtothemorerecentwidespreaduseofFPGAsincommonembeddedapplications.
FPGAs,alongwiththeirnonvolatilecousinsCPLDs(ComplexProgrammableLogicDevices),are
emergingasthenextdigitalrevolutionthatwillbringaboutchangeinmuchthesamewaythat
microprocessorsdid.
Withcurrenthighenddevicesexceeding2000pinsandtoppingbillionsoftransistors,thecomplexity
ofthesedevicesissuchthatitwouldbeimpossibletoprogramthemwithouttheassistanceofhigh
leveldesigntools. Xilinx,Altera,Actel,andLatticeallofferhighendEDAtoolsuitesdesigned
specificallytosupporttheirowndeviceshowevertheyalsoofferfreeversionsaimedatsupporting
thebulkofFPGAdevelopment.Thesevendorsunderstandtheimportanceoftoolavailabilityto
increasedsiliconsalesandtheyallseemcommittedtosupportingafreeversionoftheirtoolsforthe
foreseeablefuture.
ThroughtheuseofEDAtools,developerscandesigntheircustomdigitalcircuitsusingeither
schematicbasedtechniques,VHDL,Verilogoranycombinationofthesemethods.Priortothe
AltiumDesignersystem,vendorindependentFPGAdevelopmenttoolswereextremelyexpensive.
FurthermoretheywereonlyusefulforcircuitsthatresidedwithintheFPGAdevice.Oncethedesign
wasextendedtoincludeaPCBandancillarycircuits,aseparateEDAtoolwasneeded.Altium
DesignerhaschangedallofthisbybeingthefirstEDAtoolcapableofofferingcompleteschematic
toPCBtoolintegrationalongwithmultivendorFPGAsupport.
AltiummadethelogicalextrapolationoftrendsintheFPGAworldandrecognizedthatFPGAsare
quicklybecomingastapleinmoderndesigns.Bymakingavailablearangeofprocessorcoresthat
canbedownloadedontoanFPGAdeviceandbundlingthemwithacompletesuiteofembedded
softwaredevelopmenttools,AltiumDesignerrepresentsaunifiedPCBandembeddedsystems
developmenttool.
12
AltiumDesignerTrainingModule
FPGADesign
3 CreatinganFPGAproject
3.1
Overview
AllcomponentsthatwillbecombinedtogetherintoasingleFPGAdesignmustbeencapsulated
withinanFPGAProject.
ThetermProjectreferstoagroupofdocumentsthatcombinetogethertoformasingletarget.
Caremustbeexercisedwhencreatingaprojecttoensurethatthecorrectprojecttypeisselectedfor
thedesiredtarget.
3.2
Aquickwordaboutprojectsanddesignworkspaces
Totheuninitiated,AltiumDesignerprojectsmayappearalittle
confusingespeciallywhenprojectscontainotherprojects.
Theimportantthingtorememberisthateachprojectcanonly
haveoneoutput.Ifyouhaveadesignthatrequiresseveral
PCBsthenyouwillneedaseparatePCBprojectforeach
PCB.IfyouhaveadesignthatusesseveralFPGAsthenyou
willalsoneedaseparateFPGAprojectforeachFPGAused
onthefinaldesign.
Projectsthatarerelatedtogetherinsomewaycanbegrouped
togetherusingatypeofsuperprojectcalledaDesign
Workspace.DesignWorkspacesaresimplyaconvenient
wayofpackagingoneormoreprojectstogethersothatall
projectsfromasingledesigncanbeopenedtogether.
AltiumDesignersupportsafullyhierarchicaldesignapproach.
Assuchitispossibleforsomeprojectstocontainother
projectswithinthem. Figure3showsastructuralviewofthe
SpiritLeveldesignthatisdistributedasanexampleinthe
AltiumDesignerinstallation.Fromthisviewwecanobserve
thehierarchyofthedifferentprojectsinvolved.Thetoplevel
projectisaPCBprojectcalledSL1XilinxSpartanIIE
Figure3.Anexampleofprojecthierarchy.
PQ208Rev1.01 andhasthefilenameextensionPRJFPG.
WithinthisPCBprojectisaninstanceofanFPGAProject
FPGA_51_Spirit_Level.PrjFpg.RunningontheFPGAisa
softcoreprocessor8051.Theprogramorsoftwarethatthisembeddedsoftcoreexecutesis
containedwithinanotherprojectcalledSpiritLevel.PrjEmb.
Thehierarchyofprojectsisgivenbelow.
PRJPCB
PRJFPG
PRJEMB
OutputisasinglePCB
PCBProject
FPGAProject
EmbeddedProject
OutputisasingleFPGA
Sourcecodeforaprogramthatwillexecute
onasinglesoftcore
Figure4.PossibleProjectHierarchyforadesigncontainingmultipleprojects
APCBProjectmaycontainoneormoreFPGAprojectsbutnevertheotherwayaround. Ifyouthink
aboutityouwillrecognizethatitisquiteintuitiveaPCBcontainsFPGAswhereasanFPGAcant
containaPCB.Similarly,anFPGAcouldcontainoneormorecustomFPGAcoresor
microprocessorsoftcores.AlinkedEmbeddedProjectwilldefinethesoftwarethatexecutesoneach
ofthesoftcores.
13
AltiumDesignerTrainingModule
3.3
FPGADesign
FPGAproject
AnFPGAprojectshouldbeusedwhenthetargetisasingleFPGA.TheoutputofanFPGAproject
willbeaconfigurationbitfilethatcanbeusedtoprogramanFPGA.
ThesimplestwaytocreateaprojectisfromtheFilemenu(FileNewProject).
Figure5.CreatinganewFPGAproject
14
AltiumDesignerTrainingModule
FPGADesign
4 FPGAschematicconnectivity
4.1
Overview
SchematicdocumentsusedinFPGAdesignsareconvertedtoeitherVHDLorVerilogintheprocess
ofbeingcompiledintothedesign.Thisprocessistotallytransparenttotheuseranddoesnot
requiretheusertoknowanythingspecificabouteitherofthesetwoHardwareDescription
Languages(HDLs).ThisconversiontoHDLsdoesplacesomerequirementsontotheschematic
documenthoweverthatmustbeconsideredtoensurethattheconversionprocessgoessmoothly
andthattheresultantHDLsourcefileisvalid.
Inthissectionwewilldiscusssomeoftheextensionsthathavebeenaddedtotheschematic
environmentforthepurposesofservicingFPGAdesigns.
4.2
Wiringthedesign
Connectivitybetweenthecomponentpinsiscreatedbyphysicalconnectivity,orlogicalconnectivity.
Placingwiresthatconnectcomponentpinstoeachothercreatesphysicalconnectivity.Matchingnet
identifierssuchasnetlabels,powerports,portsandsheetentriescreateslogicalconnectivity.When
thedesigniscompiledtheconnectivityisestablished,accordingtothenetidentifierscopedefined
fortheproject.
Notethatwhiletheenvironmentsupportscompilingprojectsusingeitheraflatorhierarchical
connectivestructure,FPGAprojectsmustbehierarchical.
4.3
IncludingHDLsourcefilesinaschematic
Figure6.Linkingschematicsheetsymbolstolowerleveldocuments
VHDLorVerilogsubdocumentsarereferencedinthesamewayasschematicsubsheets,by
specifyingthesubdocumentfilenameinthesheetsymbolthatrepresentsit.Theconnectivityisfrom
thesheetsymboltoanentitydeclarationintheVHDLfileortheVerilogmodule.Toreferencean
entitywithanamethatisdifferentfromthesourceHDLfilename,includetheVHDLEntityor
VerilogModuleparameterinthesheetsymbolwhosevalueisthenameoftheEntity/Module
declaredinthesourcefile(asshownabove).
4.4
Establishingconnectivitybetweendocuments
Hierarchicalnetandbusconnectivitybetweendocumentsobeysthestandardhierarchicalproject
connectionbehavior,whereportsonthesubdocumentconnecttosheetentriesofthesamenamein
thesheetsymbolthatrepresentsthatdocument,asshownbelow.
15
AltiumDesignerTrainingModule
FPGADesign
Figure7.Connectivitybetweensheetsymbolsandlowerleveldocuments
4.5
Usingbusesandbusjoiners
Typicallytherearealargenumber
ofrelatednetsinadigitaldesign.
Busescanplayanimportantrole
inmanagingthesenets,andhelp
presentthedesigninamore
readableform.
U8
PORTA[7..0]
O[7..0]
IB[3..0]
IA[3..0]
J4B2_8B
Busescanbereordered,
PORTB[7..0] O[7..0] U9
I0
renamed,split,andmerged.To
I1
I2
managethemappingofnetsin
I3
buses,thereisaspecialclassof
I4
component,knownasabus
I5
joiner.Busjoinerscanbeplaced
I6
I7
fromtheFPGA
J8S_8B
Generic.IntLiblibrary(bus
joinernamesallstartwiththe
Figure8.Examplesofusingbusjoiners
letterJ).Figure8showsexamples
ofusingbusjoiners.Thereare
alsomanyexamplesofusingbusjoinersintheexampledesignsinthesoftware.
GND
KEY[3..0]
LCD_BUSY
VALIDKEY
GND
NotethatapartfromtheJBtypejoiner,allbusjoinerpinshaveanIOdirectionusethecorrect
joinertomaintaintheIOflow.PinIOcanbedisplayedonsheetifyouenablethePinDirection
optionintheSchematicPreferencesdialog.
TheuseofbusjoinersinFPGAdesignsisasignificantdeparturefromhowbusconnectivityis
establishedonotherschematicdocumentshoweverthebenefitsofbusjoinerssoonbecomeclear.
Netsextractedfromabusjoinerneednotberelatedinanywayie.havethesamenameand
differingonlybynumber(Data[0],Data[1],Data[2],etc).Thebusjoinerexampleaboveshows
howasinglebuscanbeusedtorouteanumberofLCDandKeypadsignalstogether,evenallowing
thejoiningofotherbussesintoasinglebusofalargerwidth.
4.5.1 Busjoinernamingconvention
Busjoinersfollowastandardizednamingconventionsothattheycanbeeasilyfoundwithinthe
FPGAGeneric.IntLiblibrary.
J<width><B/S>[Multiples]_<width><[B/S]>[Multiples]
Forexample:
J8S_8B:describesabusjoinerthatroutes8singlewirestoasingle,8bitbus.
J8B_8S:describesabusjoinerthatroutesasingle,8bitbusinto8singlewires.
J8B_4B2:describesabusjoinerthatroutesasingle8bitbusintotwo4bitbusses,
J4B4_16B:describesabusjoinerthatroutesfour,4bitbussesintoasingle16bitbus.
16
AltiumDesignerTrainingModule
FPGADesign
4.5.2 Busjoinersplitting/mergingbehaviour
Thebasicruleisthatbusjoinersseparate/mergethebits(orbusslice)
fromleastsignificantbit(orslice)downtomostsignificantbit(orslice).
Forexample,inFigure9,U17splitstheincoming8bitbusonpinI[7..0]
intotwo4bitbusslices,OA[3..0]andOB[3..0].Obeyingtheleasttomost
mappingattheslicelevel,thelowerfourbitsoftheinputbusmapto
OA[3..0],andtheupperfourbitsmaptoOB[3..0].Followingthisthroughto
thebitlevel,I0willconnecttoOA0,andI7willconnecttoOB3.
ThejoinerU27mergesthefourincoming4bitslicesintoa16bitbus.With
thisjoinerIA0connectstoO0,andID3connectstoO15.
4.5.3 Matchingbusesofdifferentwidthsusingthe
JBtypebusjoiner
Figure9.Busjoiners
TheJBtypebusjoinerallowsyoutomatchnetsinbusesofdifferent
mergeandsplitbuses
widths.Itdoesthisvia2componentparameters,IndexAandIndexBthat
mapfromonebusthroughtotheotherbus.TheseindicesmustbedefinedwhenyouuseaJB
joiner.
Figure10.Joinbusesofdifferentwidths,andcontrolthenettonetmapping
ReadtheflowofnetsthroughaJBtypebusjoinerbymatchingfromthenetsintheattachedbus,to
thefirstindexonthebusjoiner,tothesecondindexinthebusjoiner,tothenetsdefinedinthe
secondbusnetlabel.
LeftBusIndexAIndexBRightBus
Therulesformatchingnetsateachofthepointsareasfollows:
Figure11.AnexampleofusingtheJBbusjoinertoachievesubsetmapping
Ifbothbusrangesaredescending,matchbysamebusindex(onerangemustliewithintheother
forvalidconnections).InFigure11thematchingis:
IndexA9IndexB9ROMADDR9,thruto
ADDR0IndexA0IndexB0ROMADDR0
ADDR9
(InthisexampleROMADDR10thruROMADDR13willbeunconnected)
Figure12.Usingofabusjoinerforoffsetmapping
InFigure12thematchingis:
INPUTS15
INPUTS0
IndexA15IndexB31PORTB31,thruto
IndexA0 IndexB0 PORTB16
17
AltiumDesignerTrainingModule
FPGADesign
Figure13.Usingabusjoinerforrangeinversion
Ifonebusrangeisdescendingandanotherisascending,theindicesarematchedfromleftto
right.InFigure13thematchingis:
IndexA15IndexB31PORTB31,thruto
INPUTS15IndexA0 IndexB16PORTB16
INPUTS0
Figure14.Anotherexampleofusingabusjoinerforrangeinversion
InFigure14thematchingis:
INPUTS15
INPUTS0
IndexA15IndexB31PORTB0,thruto
IndexA0 IndexB16 PORTB15
18
AltiumDesignerTrainingModule
FPGADesign
5 FPGAreadyschematiccomponents
5.1
Overview
AwidevarietyofFPGAreadyschematic
componentsareincludedwiththesystem,ranging
fromprocessors,toperipheralcomponents,down
togenericlogic.Placingandwiringthese
schematiccomponents,orwritingVHDL,captures
thehardwaredesign.TheFPGAreadyschematic
componentsareliketraditionalPCBready
components,exceptinsteadofthesymbolbeing
linkedtoaPCBfootprinteachislinkedtoapre
synthesizedEDIFmodel.
Aswellascomponentsthatyouusetoimplement
yourdesign,theavailableFPGAlibrariesinclude
componentsforthevirtualinstruments,andthe
componentsthataremountedontheNanoBoard
andareaccessibleviathepinsontheFPGA.
HelpforallFPGAreadycomponentscanbe
accessedbypressingtheF1keywhilstthe
componentisselectedinthelibrarylist.
5.2
Processorcores
Softcoreprocessorscanbeplacedfromthe
\ProgramFiles\AltiumDesigner
6\Library\Fpga\FPGAProcessors.IntLib
library.Atthetimeofreleaseofthismanual,the
followingprocessorsandrelatedembedded
softwaretoolsaresupported:
TSK165Microchip165xfamilyinstructionset
compatibleMCU
TSK51/528051instructionsetcompatible
MCU
TSK80Z80instructionsetcompatibleMCU
PPC405AEmbeddedPowerPCCore
availableonsomeVirtexFPGAs
TSK300032bitRISCprocessor
Thereisalsofullembeddedtoolsupportfor:
ActelCoreMP7softcore,whichrequiresthe
appropriateActeldeviceandlicensetouse
AlteraNiosIIsoftcore,whichrequiresthe
appropriateAlteradeviceandlicensetouse
XilinxMicroBlazesoftcore,whichrequiresthe
appropriateXilinxdeviceandlicensetouse
Figure15.Thelibrariespanel
XilinxVirtex2ProbasedPowerPC405
AMCCPowerPC405discreteprocessorfamily
ARM7,ARM9,ARM9E&ARM10Efamilies,supportedintheSharpBlueStreak(ARM20T)
discreteprocessorfamily
LPC2100,LPC2200,LPC2300&LPC2800ARM7baseddiscreteprocessorsfromNXP
19
AltiumDesignerTrainingModule
5.3
FPGADesign
DesktopNanoBoardportplugins
HardwareresourcesontheDesktopNanoBoardcanbeaccessedviatheuseofcomponentsfrom
the\ProgramFiles\AltiumDesigner6\Library\Fpga\FPGANB2DSK01Port
Plugin.IntLiblibrary.
5.4
PeripheralComponents
ManyofthehardwareresourcespresentontheNanoBoardcomewithperipheralmodulesthatcan
beincludedintheFPGAdesigntoeaseinterfacingtotheexternalport.
Peripheralscanbeplacedfromthe\ProgramFiles\AltiumDesigner
6\Library\Fpga\FPGAPeripherals.IntLiblibrary.
5.5
Genericcomponents
Genericcomponentscanbeplacedfromthelibrary
\ProgramFiles\AltiumDesigner
6\Library\Fpga\FPGAGeneric.IntLib.This
libraryisincludedtoimplementtheinterfacelogic
inyourdesign.Itincludespinwideandbuswide
versionsformanycomponents,simplifyingthe
wiringcomplexitywhenworkingwithbuses.Aswell
asabroadrangeoflogicfunctions,thegeneric
libraryalsoincludespullupandpulldown
componentsaswellasarangeofbusjoiners,used
tomanagethemerging,splittingandrenamingof
buses.
Foradefinitionofthenamingconventionusedin
thegenericlibraryandacompletelistingof
availabledevices,refertothedocument:CR0118
FPGAGenericLibraryGuide.pdf.
Wildcardcharacterscanbeusedtofilterwhen
searchingthecomponentlibrary.
5.6
Vendormacroand
primitivelibraries
Ifvendorindependenceisnotrequired,thereare
alsocompleteprimitiveandmacrolibrariesforthe
currentlysupportedvendors/devicefamilies.These
librariescanbefoundintherespectiveActel,
Altera,LatticeandXilinxsubfoldersin\Program
Files\AltiumDesigner6\Library\.The
macroandprimitivelibrarynamesendwiththe
Figure16.Usingwildcardstoquicklyfindaspecific
string*FPGA.IntLib.Notethatsomevendors
componentintheGenericLibrary
requireyoutouseprimitiveandmacrolibrariesthat
matchthetargetdevice.Designsthatinclude
vendorcomponentscannotberetargetedto
anothervendorsdevice.
110
AltiumDesignerTrainingModule
5.7
FPGADesign
Exercise1CreateaPWM
InthisexercisewewillcreateourfirstFPGAdesign.Inordertocompletethistaskyouwillneedto
usethefollowingcomponentsfromtheirrespectivelibraries:
Component
Library
CLK_BRD
TEST_BUTTON
ON
SW[7..0]
NameinLibrary
FPGANB2DSK01PortPlugin.IntLib
CLOCK_BOARD
FPGANB2DSK01PortPlugin.IntLib
TEST_BUTTON
FPGANB2DSK01PortPlugin.IntLib
DIPSWITCH
FPGANB2DSK01PortPlugin.IntLib
LED
FPGAGeneric.IntLib
CB8CEB
FPGAGeneric.IntLib
INV
FPGAGeneric.IntLib
COMPM8B
FPGAGeneric.IntLib
J8S_8B
1 2 3 4 5 6 7 8
LEDS[7..0]
U1
CB8CEB
Q[7..0]
CE
C
CEO
TC
CLR
U2
INV
U3
A[7..0]
B[7..0]
GT
LT
COMPM8B
I0
I1
I2
I3
I4
I5
I6
I7
U4
O[7..0]
J8S_8B
1.
2.
3.
4.
OpenanewFPGAProject.SaveitasMyPWM.PrjFpg
AddanewschematictoyourprojectandsaveitasMyPWM.SchDoc
PlaceandwirethecomponentstocreatethePulseWidthModulator
UsingcomponentsfromthetwolibrariesFPGAGeneric.IntLibandFPGANanoBoard
PortPlugin.IntLib,placeandwiretheschematicshowninFigure17.
111
AltiumDesignerTrainingModule
FPGADesign
U1
CB8CEB
Q[7..0]
VCC
CE
C
CLK_BRD
CEO
TC
CLR
U2
TEST_BUTTON
INV
U3
A[7..0]
B[7..0]
I0
I1
I2
I3
I4
I5
I6
I7
GT
LT
COMPM8B
ON
SW[7..0]
1 2 3 4 5 6 7 8
U4
O[7..0]
LEDS[7..0]
J8S_8B
GND
Figure17.Saveyourwork wewillcontinuewiththisschematicsoon
112
AltiumDesignerTrainingModule
FPGADesign
6 Targetingthedesign
Theschematicthatwehavejustcreatedcontainsalloftheconnectivitythatmustoccurinternallyon
ourFPGAdevicebutwestillneedsomefurtherinformationtomaptheportsontheFPGAschematic
tophysicalpinsonanactualFPGAdevice.Thisprocessiscalledtargetingourdesign.
6.1
Constraintfiles
Ratherthanstoringdeviceandimplementationspecificdatasuchaspinallocationsandelectrical
propertiesinthesourceHDLorschematicdocuments,thisinformationisstoredinseparatefiles
calledConstraintfiles.ThisdecouplingofthelogicaldefinitionofanFPGAdesignfromitsphysical
implementationallowsforquickandeasyretargetingofasingledesigntomultipledevicesandPCB
layouts.
BelowweseeaconceptualrepresentationofanFPGAdesignsittinginsideanFPGAdevice.The
redlinesindicatetheporttopinmappingsthatwouldbehandledbytheconstraintfile.
Figure18.ConceptualviewshowingthelinkageofportsonanFPGAschematicroutedtophysicaldevicepins.
113
AltiumDesignerTrainingModule
6.2
FPGADesign
Configurations
AConfigurationisasetofoneormoreconstraintfilesthatmustbeusedtotargetadesignfora
specificoutput.Themigrationofadesignfromprototypetoproductionwillofteninvolveseveral
PCBiterationsandpossiblyevendifferentFPGAdevices.Inthiscase,aseparateconfiguration
wouldbeusedtobringtogetherconstraintfileinformationfromeachdesigniteration.Eachnew
configuration(anditsassociatedconstraintfile(s)isstoredwiththeprojectandcanberecalledat
anytime.
Becauseconfigurationscancontainmultipleconstraintfiles,itcansometimesbehelpfultosplit
constraintinformationacrossmultipleconstraintfiles.Usuallyonewouldseparatetheconstraintfiles
accordingtotheclassofinformationtheycontain:
6.2.1 Deviceandboardconstraintinformation:
ThespecificFPGAdevicemustbeidentifiedandportsdefinedinthetoplevelFPGAdesignmustbe
mappedtospecificpinnumbers.
6.2.2 Deviceresourceconstraintinformation:
Insomedesignsitmaybeadvantageoustomakeuseofvendorspecificresourcesthatareunique
toagivenFPGAdevice.Someexamplesarehardwaremultiplicationunits,clockmultipliersand
memoryresources.
6.2.3 Projectordesignconstraintinformation:
Thiswouldincluderequirementswhichareassociatedwiththelogicofthedesign,aswellas
constrainsonitstiming.Forexample,specifyingthataparticularlogicalportmustbeallocatedto
globalclocknet,andmustbeabletorunatacertainspeed.
6.3
NanoBoardconstraintfiles
ConstraintfilesforusewiththeNanoBoarddaughter/peripheralboardmodulescanbefoundinthe
\ProgramFiles\AltiumDesigner6\Library\Fpgadirectory.Toprotectthesesystem
filesfrominadvertentmodification,itisadvisabletomakethisdirectoryreadonly.
6.4
ConfigurationManager
ThegroupingofmultipleconstraintsintoasingleconfigurationismanagedviatheConfiguration
ManageraccessiblebyrightclickingtheFPGAprojectintheProjectspanelandselecting
ConfigurationManagerfromthemenu.
Figure19.ConfigurationManagershowingmultipleconfigurationsandconstraintfiles.
Figure19showstheConfigurationManagerdialogforaprojectthatcontainsmultipleconfigurations
andconstraintfiles.TheConstraintfilesarelistedintheleftcolumnandcanbeincludedina
Configuration(listedastheheadingsinthefourrightcolumns)byplacingatickattherow/column
intersectionpoint.Althoughthisexampleonlyshowsoneconstraintfilebeingusedineachofthe
configurations,thereisnoreasonwhyaconstraintfilecantbeusedbymorethanoneconfiguration
noristhereanyreasonwhyaconfigurationcantmakeuseofmultipleconstraintfiles.
114
AltiumDesignerTrainingModule
6.5
FPGADesign
AutoConfiguringanFPGAproject
Configuringadesignforuse
withtheDesktopNanoBoard
hasbeenalmostcompletely
automatedwiththeintroduction
oftheAutoConfigurationoption
inAltiumDesigner.Fromthe
DevicesViewlocatedunder
ViewDevicesViewor
alternativelyaccessedfromthe
iconinthetoolbar,simply
rightclicktheimageofthe
DesktopNanoBoardandselect
theoptionConfigureFPGA
Project<ProjectName>.
Figure20.AutoconfiguringanFPGA
ThiswillautomaticallyconfiguretheFPGAProjecttoincludetheconstraintfilesrequiredtotargetthe
hardwareontheDesktopNanoboardandwilllaunchtheConfigurationManagerdialogforthe
currentFPGAproject.
Figure21.Autoconfigurationdisplayedintheconfigurationmanager
6.6
Definingconstraintsmanually
Oftenitisnecessarytomanuallycreatedesignconstraints.Theseincludeconstraintsforsuch
physicalattributesasthefrequencyofasystemclock,ortheassociationofsignalstospecificdevice
pins(suchasonemightexpecttofindwhentargetingadesignforauserboard).Tocreateauser
constraintfile,rightclicktheFPGAprojectandselectAddNewtoProjectConstraintFile.This
willcreateanewblankconstraintfileandaddittotheproject.
Figure22.Newblankconstraintfile
115
AltiumDesignerTrainingModule
6.7
FPGADesign
Editingaconstraintfile
Constraintfileadditions/modificationscanbemadebymanuallyeditingtheconstraintfileorby
usingtheDesignAdd/ModifyConstraint menu.
Figure23.Add/ModifyConstraintmenuoptions
6.7.1 Specifyingportconstraints
UsetheAdd/ModifyConstraintPortto
applyaconstrainttoaportintheFPGA
project.
Figure24.Add/ModifyPortConstraintdialogbox.
SelectingOKfromthedialogboxinFigure24willcausethefollowingconstrainttobeaddedtothe
constraintfile:
Record=Constraint|TargetKind=Port|TargetId=CLK_BRD|FPGA_CLOCK_PIN=True
ThisconstraintwillensurethattheVendorFPGAtoolsroutetheCLK_BRDporttoaspecialized
clockpinonthetargetdevice.
Alternatively,theFPGA_PINNUM
constraintcanbespecifiedtolocktheport
toaspecificpinonthetargetdevice.
Figure25.Add/ModifyPortConstraintdialogbox.
SelectingOKfromthedialogboxinFigure25willaddtheconstraintFPGA_PINNUM=P185tothe
CLK_BRDportconstraint.
AcompletelistofthesupportedconstraintsandtheirsyntaxcanbefoundinthedocumentTR0130
ConstraintFileReference.PDFlocatedundertheKnowledgeCenterorfromtheAltiumwebsite.
116
AltiumDesignerTrainingModule
6.8
FPGADesign
Exercise2ConfiguringMyPWM
1. SwitchtotheDevicesViewunderViewDevicesViewsorbyhittingthe
toolbaratthetopofthescreen.
buttoninthe
2. RightClicktheimageofthe
DesktopNanoboardatthetop
ofthewindowandselect
ConfigureFPGA
ProjectMyPWM.PrjFpgas
seeninFigure26.
Becausewearetargetingour
designfortheDesktop
NanoBoard,wewillbeusing
existingconstraintfiles
locatedintheAltiumDesigner
6\Library\FPGAdirectory.
Whenweelecttoauto
configureaswehaveinthis
Figure26.ConfiguringtheFPGAProjectAutomatically
fashion,AltiumDesignerwill
retrieveinformationaboutthe
daughterboardandvariousperipheralboardsthatwehavepluggedintotheDesktop
NanoBoardandaddconstraintfilesasrequired.
3. AfterlaunchingtheConfigureFPGAProjectcommand,theConfigurationManagerFor
MyPWM.PRJFPGdialogshouldcomeupandshowalistingofalloftheconstraintsfilesthat
havebeenautomaticallyincludedunderthisnewconfiguration.
Figure27.ConfigurationManagerwithconstraintfilesaddedbytheConfigureFpgaProjectcommand.
ClickOKtoclosethisdialogandtheHardJTAGChainshouldnowappearinthemain
window.YoumaynoticethatanewSettingsfolderhasbeenaddedtotheproject.Inthis
folderyouwillfindaConstraintFilesfolderwithallofthenewlyaddedconstraintfiles.
Severalofthefileswillhaveashortcut symbol.
Figure28.BuildflowafterautoconfiguringtheFPGAdesign.
117
AltiumDesignerTrainingModule
FPGADesign
4. TheautoconfigurationprocessdealswiththemappingofportsdefinedonthetoplevelFPGA
schematicdocumentandtheirtargetFPGApins.Thereare,however,additionalconstraints
(suchastheclockfrequency)thatareimportantforthedesignbutwhichcannotbehandled
automatically.Inordertocapturethisinformation,itisbesttocreateanotherconstraintfilethat
isreservedforthisinformationandaddittotheconfiguration.RightclicktheFPGAproject
andselectAddNewtoProjectConstraintFiletoaddanew,blankconstraintfile.
5.
6.
7.
8.
SavethenewconstraintfilewiththenameMyConstraint.constraint
SelectDesign>>Add/ModifyConstraint>>Port .
IntheAdd/ModifyPortConstraintdialogsettheTargettoCLK_BRD
SettheConstraintKindtoFPGA_CLOCK_FREQUENCY
9. SettheConstraintValueto50MHz.
10. ClickOKtoclosetheAdd/ModifyPortConstraintdialog.
11. ObservethatanewconstraintrecordhasbeenaddedtoMyConstraints.Constraint.
12. Saveyourwork.
13. ReturntotheConfigurationManagerandaddMyConstraint.Constrainttotheexisting
configuration.
14. Saveyourproject.
118
AltiumDesignerTrainingModule
FPGADesign
7 Runningthedesign
HavingjustconfiguredourdesignfortheNanoBoardthenextstepistobuildandrunthedesignon
theNanoBoard.
7.1
Overview
BeforeanFPGAdesigncanbedownloadedontoitstargethardware,itmustfirstundergoamulti
stagebuildprocess.Thisprocessisakintothecompilationprocessthatsoftwareundergoesin
ordertocreateaselfcontainedprogram.Inthissectionwewilldiscussthevariousstepsnecessary
tobuildanFPGAdesigntothepointwhereitisreadytobedownloadedontothetargetdevice.
7.2
Controllingthebuildprocess
TheprocessofconvertingaschematicorVHDLdescriptionofadigitalcircuitintoabitfilethatcan
bedownloadedontoanFPGAisquitecomplex.Fortunately,AltiumDesignergoestogreatlengths
toensurethatnavigationthroughthisprocessisaseasyaspossible.Asavendorindependent
FPGAdevelopmenttool,AltiumDesignerprovidesatransparentinterfacetothevendorspecific
backendtools.CurrentlyAltiumDesignersupportsinteractionwithActelDesigner(Actel),QuartusII
(Altera),ispLEVER(Lattice),andISE(Xilinx)toperformFPGAprocessing.Thisisallhandled
seamlesslythroughtheDevicesView(ViewDevices).TheDevicesViewprovidesthecentral
locationtocontroltheprocessoftakingthedesignfromthecapturestatethroughtoimplementingit
inanFPGA.
Figure29.DevicesviewofanFPGAdesignthatisyettobeprocessed.
WhenrunintheLivemode,AltiumDesignerisintelligentenoughtodetectwhichdaughterboard
deviceispresentontheDesktopNanoBoard.Intheaboveinstance,ithasdetectedthatthe
Spartan3daughterboardisinstalled.Withthisinformation,itthensearchesthecurrentprojects
configurationlisttoseeifanyconfigurationsmatchthisdevice.Ifmorethanoneconfigurationis
found,thedropdownlistbelowthedeviceiconwillbepopulatedwithalistofvalidconfigurations.If
noconfigurationcanbefound,thelistwilldisplaythefollowing:
Figure30.ThismessageindicatesthattheprojectisnotconfiguredtotargettheavailableFPGA.
Assumingavalidconfigurationcanbefound,thesimplestwaytobuildanddownloadadesignonto
theNanoBoardistoleftclickontheProgramFPGAbutton.Thiswillinvoketheappropriatebuild
processesthatneedtoberun.Intheaboveexamplewherenopreviousbuildshavetakenplace,all
processeswillneedtoberun. Inothersituationswhereaprojecthasjustbeenmodified,itmaybe
necessaryforonlyasubsetofthebuildprocessestorun.
119
AltiumDesignerTrainingModule
7.3
FPGADesign
Understandingthebuildprocess
Figure31.NavigatingthroughtheBuildProcessflow.
BuildinganFPGAprojectrequiresprocessingthroughanumberofstages.Navigationthroughthe
buildprocessisaccomplishedviathefourstepscircledinFigure31.Thefunctionofeachstagewill
beexplainedshortly.
7.4
Buttonregions
Eachofthemainbuttonsdisplayedinthebuildflowhaveseveralregionsthatprovideinformationor
controlovertheindividualbuildstage.
7.4.1 StatusLED
Thecoloredindicatortellsyouthestatusofthatparticularstepintheoverallbuildflow.
Grey
NotAvailableThesteporstagecannotberun.
Red
MissingThesteporstagehasnotbeenpreviouslyrun.
Yellow
OutofDateAsourcefilehaschangedandthesteporstagemustberunagaininorder
toobtainuptodatefile(s).
Blue
RunningThesteporstageiscurrentlybeingexecuted.
Orange
CancelledThesteporstagehasbeenhaltedbyuserintervention.
Magenta
FailedAnerrorhasoccurredwhilerunningthecurrentstepofthestage.
Green
UptoDateThesteporstagehasbeenrunandthegeneratedfile(s)areuptodate.
7.4.2 Runall
Clickingonthearrowiconwillforcethecurrentstageandallpriorstagestorunregardlessof
whethertheyhaveruntocompletionpreviously.Selectingthisiconwillforceatotallycleanbuild
evenifthedesignhasbeenpartiallybuilt.
7.4.3 Run
Selectingthelabelregionwillrunthecurrentstageandanypreviousdependantstagesthatarenot
uptodate.Thisisthequickestwaytobuildadesignasitonlybuildsthoseportionsofthedesign
thatactuallyrequireit.
120
AltiumDesignerTrainingModule
FPGADesign
7.4.4 Showsubstages
Selectingthedownarrowwillexposeadropdownlistofthevarioussubstagesforthecurrentbuild
stage.ThestatusofthevarioussubstagesisindicatedbythecolorofthestatusLED.Wherea
substagehasfailed,theassociatedreportfilecanbeexaminedtohelpdeterminethecauseofthe
failure.
Figure32.Substagesavailableunderthemainbuildstage.
7.5
Accessingstagereports/outputs
Allgeneratedoutputfilesarestoredinafolderwiththesamenameastheconfigurationusedforthe
associatedproject.ThisfolderislocatedattheoutputpathdefinedintheOptionstaboftheOptions
forProjectdialog(ProjectProjectOptions).Ingeneralonlyfilesthatarecreatedaspartofthe
buildprocessshouldbelocatedhere.Thisensuresthatprojectscanbecompactedbydeletingthis
directorywithoutfearoflossofimportantinformation.
Whereareportisavailableuponrunningastagestep,clickingontheassociated iconcanaccess
it.Usethisfeaturetoaccessdetailedinformationrelatingtowhyaspecificstagemayhavefailedto
build.
7.6
Buildstages
Wewillnowexplainthedifferentstagesinthebuildprocess.
7.6.1 Compile
Figure33.Compilestageoftheprocessflow.
Thisstageoftheprocessflowisusedtoperformacompileofthesourcedocumentsinthe
associatedFPGAproject.Ifthedesignincludesanymicroprocessorcores,theassociated
embeddedprojectsarealsocompiledproducingaHexfileineachcase.
ThisstagecanberunwiththeDevicesviewconfiguredineitherLiveorNotLivemode.
ThecompileprocessisidenticaltothatperformedfromtheassociatedProjectmenu.Runningthis
stagecanverifythatthecapturedsourceisfreeofelectrical,draftingandcodingerrors.
Note:ThesourceFPGA(andembedded)project(s)mustbecompiledeitherfromtheProjects
panelorbyrunningtheCompilestageintheDevicesviewinordertoseeNexusenableddevice
entriesintheSoftDevicesregionoftheDevicesview.
121
AltiumDesignerTrainingModule
FPGADesign
7.6.2 Synthesize
Figure34.Synthesizestageoftheprocessflow.
ThisstageoftheprocessflowisusedtosynthesizethecompiledFPGAproject,aswellasanyother
componentsthatneedtobegeneratedandsynthesizedtospecificdevicearchitectures.Thevendor
placeandroutetoolssubsequentlyusethesynthesisfilesgenerated,duringthebuildstageofthe
flow.Runningthisstagewilldeterminewhetherthedesignissynthesizableornot.
ThisstagecanberunwiththeDevicesviewconfiguredineitherLiveorNotLivemode.
TheactualstepsinvolvedinprovidingatoplevelEDIFnetlistandsatellitesynthesismodelfilesfor
usebythenextstageintheprocessflowcanbesummarizedasfollows:
Thecoresforanydesign/devicespecificblocksusedintheFPGAdesignwillbeautogenerated
andsynthesized(e.g.ablockofRAMwiredtoanOCDversionmicrocontrollerforuseas
externalProgrammemoryspace).Thesesynthesizedmodelswillcontaincompiledinformation
fromtheembeddedproject(Hexfile).
ThemainFPGAdesignisthensynthesized.AnintermediateVHDLorVerilogfilewillbe
generatedforeachschematicsheetinthedesignandatoplevelEDIFnetlistwillbecreated
usingtheseandanyadditionalHDLsourcefiles.
Fortheparticularphysicaldevicechosen,synthesizedmodelfilesassociatedwithcomponentsin
thedesignwillbesearchedforandcopiedtotherelevantoutputfolder.BothSystemandUser
presynthesizedmodelsaresupported.
ThetoplevelfolderforSystempresynthesizedmodelsisthe\ProgramFiles\Altium
Designer6\Library\Ediffolder,whichissubdividedbyVendorandthenfurtherbydevice
family.
ThetoplevelfolderforuserpresynthesizedmodelsisdefinedintheSynthesispageofthe
FPGAPreferencesdialog,accessedundertheTools menu.
Thefollowinglistsummarizestheorder(toptobottom=firsttolast)inwhichfoldersaresearched
whenlookingforasynthesizedmodelassociatedwithacomponentinthedesign:
FPGAprojectfolder
Usermodelstopfolder\Vendorfolder\Familyfolder
Usermodelstopfolder\Vendorfolder
Usermodelstopfolder
Systemmodelstopfolder(Edif)\VendorFolder\Familyfolder
Systemmodelstopfolder(Edif)\Vendorfolder
Systemmodelstopfolder(Edif).
7.6.3 Build
Figure35.BuildstageoftheprocessflowforXilinxdevices.
Thisstageoftheprocessflowisusedtorunthevendorplaceandroutetools.Thisstagecanberun
withtheDevicesviewconfiguredineitherliveornotlivemode.
122
AltiumDesignerTrainingModule
FPGADesign
Runningthetoolsatthisstagecanverifyifadesignwillindeedfitinsidethechosenphysicaldevice.
YoumayalsowishtoruntheVendortoolsifyouwanttoobtainpinassignmentsforimportingback
intotherelevantconstraintfile.
TheendresultofrunningthisstageisthegenerationofanFPGAprogramming filethatwill
ultimatelybeusedtoprogramthephysicaldevicewiththedesign.Thereareessentiallyfivemain
stagestothebuildprocess:
TranslateDesignusesthetoplevelEDIFnetlistandsynthesizedmodelfiles,obtainedfrom
thesynthesisstageoftheprocessflow,tocreateafileinNativeGenericDatabase(NGD)format
i.e.vendortoolprojectfile
MapDesigntoFPGAmapsthedesigntoFPGAprimitives
PlaceandRoutetakesthelowleveldescriptionofthedesign(fromthemappingstage)and
worksouthowtoplacetherequiredlogicinsidetheFPGA.Oncearranged,therequired
interconnectionsarerouted
TimingAnalysisperformsatiminganalysisofthedesign,inaccordancewithanytiming
constraintsthathavebeendefined.Iftherearenospecifiedconstraints,defaultenumerationwill
beused
MakeBitFilegeneratestheprogrammingfilethatisrequiredfordownloadingthedesigntothe
physicaldevice.
WhentargetingaXilinxdevice,anadditionalstageisavailableMakePROMFile.Thisstageis
usedwhenyouwanttogenerateaconfigurationfileforsubsequentdownloadtoaXilinx
configurationdeviceonaProductionboard.
AftertheBuildstagehascompleted,theResultsSummarydialogwillappear(Figure36).This
dialogprovidessummaryinformationwithrespecttoresourceusagewithinthetargetdevice.
Informationcanbecopiedandprintedfromthedialog.Thedialogcanbedisabledfromopening,
shouldyouwish,astheinformationisreadilyavailableintheOutputpanelorfromthereportfiles
producedduringthebuild.
Figure36.Summarizingresourceusageforthechosendevice.
123
AltiumDesignerTrainingModule
FPGADesign
7.6.4 Program
Thisstageoftheprocessflowisusedto
downloadthedesignintothephysical
FPGAdeviceonaNanoBoardorproduction
board.Thisstageisonlyavailablewhenthe
DevicesviewisconfiguredinLivemode.
Figure37.ProgramFPGAstageoftheprocessflow.
Figure38.SuccessfulprogrammingofthephysicalFPGAdevice.
Thisstageoftheflowcanonlybeused
oncethepreviousthreestageshavebeen
runsuccessfullyandaprogrammingfilehas
beengenerated.Agreenarrowwillpointto
thedevicetobeprogrammedintheHard
DevicesChain.
Astheprogrammingfileisdownloadedto
thedeviceviatheJTAGlink,theprogress
willbeshownintheStatusbar.Once
successfullydownloaded,thetext
underneaththedevicewillchangefrom
ResettoProgrammed(Figure38)and
anyNexusenableddevicesonthesoft
chainwillbedisplayedasRunning(Figure
39).
Figure39.Softdevicesrunningaftersuccessfulprogramdownload.
7.7
Configuringabuildstage
Shouldyouwishtoconfigureanyofthespecificoptionsassociated
witheachofthedifferentsubstagesintheFPGAbuildflow,youcan
dosobyclickingontheappropriateconfigurationicon.
ConsiderthecasewhereyouwanttogenerateaPROMfilefor
subsequentdownloadtoaXilinxconfigurationdeviceonaproduction
board.IntheprocessflowassociatedtothetargetedFPGAdevice,
expandthebuildsection.ThelastentryinthebuildmenuisMake
PROMFile
Clickingonthe icon,tothefarrightofthismenuentry,willopen
theOptionsforPROMFileGenerationdialog(Figure41).From
hereyoucanchoosethenonvolatileconfigurationdevicethatwillbe
usedbytheproductionboardtostoretheFPGAconfiguration.
Figure41.AccessingtheoptionsdialogforPROMfilegeneration.
124
AltiumDesignerTrainingModule
7.8
FPGADesign
HowAltiumDesignerinteractswithbackendvendortools
IfyouarealreadyfamiliarwiththebuildflowsofferedbyAlteraandXilinx,youwillbefamiliarwith
oneorbothofthefollowingpanels:
Figure42.Xilinx(left)andAltera(right)vendortoolinterfaces.
AlthoughAltiumDesignerhasitsownHDLsynthesizer,itisreliantonbackendvendortoolsto
implementthedesignonaspecificdevice.Thismakessense,asitisthedevicevendorswhohave
themostintimateknowledgeoftheirspecificdevicesandwhohavealreadydevelopedwellproven
targetingtechnologies.
Mostvendorspecifictoolshavebeendevelopedinamodularfashionandcontainanumberof
separateexecutableprogramsforeachphaseoftheimplementationprocess.ThevendorGUIsthat
arepresentedtotheuserarecocoordinatingprogramsthatsimplypasstheappropriateparameters
tobackend,commandlineprograms.
WhenitcomestoFPGAtargeting,AltiumDesigneroperatesinasimilarfashioninthatitactsasa
coordinatorofbackend,vendorspecificprograms.Parametersthatneedtobepassedfromthe
AltiumDesignerfrontendtothevendorspecificbackendprogramsarehandledbyaseriesoftext
basedscriptfiles.Userswhoarealreadyfamiliarwiththebackendprocessingtoolsmayfindsome
useinaccessingthesescriptfilesshouldtheywishtomodifyortweakinteractionwithbackend
processingtools.Thishoweverisconsideredahighlyadvancedtopicandonethatshouldbe
handledcautiously.Ensurebackupsaretakenpriortomodification.
ThefilescontrollinginteractionwithvendorspecificbackendtoolscanbefoundintheSystem
directoryundertheAltiumDesigner6installdirectory.Thenamingconventionusedforthese
filesis:
Device[Options|Script]_<vendor>[_<tool>|<family>].txt
soforexampleDeviceOptions_Xilinx_PAR.txtcontrolsthedefaultoptionsforXilinxsPlace
andRoutetool.
7.9
Exercise3RunMyPWMontheNanoBoard
InthisexerciseweshalltakeourpreviouslydevelopedPWMdesignandrunitontheNanoBoard.
1. EnsurethattheNanoBoardiscorrectlyconnectedtothePC,theXC3S15004FG676Cdaughter
boardisloaded,andtheNanoBoardisswitchedon.
2. OpentheDevicesViewandensuretheLivecheckboxisticked.
3. ClickonthelabelregionoftheProgramFPGAbuttonintheFPGABuildflow.Thedesignwill
beginbuildingandmaytakeamomentortwotocomplete.
4. Ifanybuilderrorsoccur,diagnoseandrectifytheerrorandattemptthebuildprocessagain.
5. Oncedownloaded,verifytheoperationofthedesignbyswitchingdifferentDIPswitchesoffand
on.YoushouldnoticeachangeintheLEDillumination.
125
AltiumDesignerTrainingModule
FPGADesign
8 Embeddedinstruments
8.1
Overview
SofarwehavebuiltourPWMFPGAdesignandrunitontheNanoBoard.Fortunatelythisdesign
providedanoutputontheLEDsthatenabledustoimmediatelyverifythatthecircuitwasperforming
asweexpected.Buthowdoweverifyotherdesigns?Inthissectionwewillintroducetherangeof
embeddedinstrumentsthatcanbeintegratedintoFPGAdesignstofacilitateonchiptestingand
debugging.
8.2
OnChipdebugging
AbigconcernofmanyembeddedsystemsdesignerstransitioningtoFPGAbaseddesignisthe
issueofdebugginghowdoesoneseeinsideanFPGAcircuittodiagnoseafault?Whattheymay
notbeawareofisthattheflexibilityofFPGAdevicesenablestypicaltestandmeasurement
instrumentstobewiredinsidethedeviceleadingtofareasierdebuggingthanwhathaspreviously
beenpossible.
TheAltiumDesignersystemincludesahostofvirtualinstrumentsthatcanbeutilizedtogain
visibilityintothehardwareandquicklydiagnoseelusivebugs.Theseinstrumentscanbefoundin
theFPGAInstruments.IntLibintegratedlibrary.Thehardwareportionoftheinstrumentis
placedandwiredontheschematiclikeothercomponents.Oncethedesignhasbeenbuilt,realtime
interactionwitheachinstrumentispossiblefromtheDevicesView.
Figure43.Embeddedinstrumentsdisplayedinthedevicesview.
Thecontrolsfortheindividualembeddedinstrumentscanbeaccessedbydoubleclickingtheir
associatediconintheDevicesView.
126
AltiumDesignerTrainingModule
8.3
FPGADesign
CLKGEN
Figure44.Frequencygenerator,usedtogeneratethespecifiedfrequency
Thefrequencygeneratoroutputsa50%dutycyclesquare
U7
wave,ofthespecifiedfrequency.Clickingtheappropriate
buttoncanchooseanumberofpredefinedfrequencies,ora
TIMEBASE
FREQ
customfrequencycanbeselectedusingtheOtherFrequency
button.Ifthespecifiedfrequencycannotbegeneratedthe
FrequencyGenerator
closestpossibleisgeneratedandtheerrorshownonthe
CLKGEN
display.Notethatwhenthefrequencygeneratorisinstantiated
intheFPGAitwillnotberunning,youmustclicktheRunbuttontogenerateanoutput.
8.4
CROSSPOINT_SWITCH
Figure45.Crosspointswitch,usedtocontroltheconnectionbetweeninputandoutputsignals
TheCROSSPOINT_SWITCHdeviceisaconfigurablesignal
switchinginstrumentwhichprovidesanefficientmeansby
whichtoswitchsignalsinadesign.
Theinterconnectionbetweeninputandoutputblocksis
completelyconfigurable.Initialconnectionscanbedefinedas
partofdesigntimeconfiguration,butcanbechangedonthe
flyatruntime,fromthedevice'sassociatedinstrumentpanel.
Thelatterenablesyoutoswitchsignalswithouthavingtore
synthesizeanddownloadtheentiredesigntotheFPGA.
8.5
U18
CrosspointSwitch
AIN_A[7..0]
AOUT_A[7..0]
AIN_B[7..0]
AOUT_B[7..0]
BIN_A[7..0]
BIN_B[7..0]
BOUT_A[7..0]
BOUT_B[7..0]
CROSSPOINT_SWITCH
FRQCNT2
Figure46.Frequencycounter,usedtomeasurefrequencyinthedesign
Thefrequencycounterisadualinputcounterthatcandisplaythe
measuredsignalin3differentmodesasafrequency,period,ornumberof
pulses.
U6
FREQA
FREQB
TIMEBASE
FrequencyCounter
FRQCNT2
127
AltiumDesignerTrainingModule
8.6
FPGADesign
IOB_x
Figure47.DigitalIOmodule,usedtomonitorandcontrolnodesinthedesign
ThedigitalI/Oisageneralpurposetoolthatcanbeusedfor
bothmonitoringandactivatingnodesinthecircuit.Itis
availableineither8bitwideor16bitwidevariants,with1to
4channels.
EachinputbitpresentsasaLED,andthesetof8or16bits
alsopresentsasaHEXvalue.Outputscanbesetorcleared
individuallybyclickingtheappropriatebitintheOutputsdisplay.AlternativelytypinginanewHEX
valueintheHEXfieldcanaltertheentirebyteorword.IfaHEXvalueisenteredyoumustclickthe
buttontooutputit.TheSynchronizebuttoncanbeusedtotransferthecurrentinputvaluetothe
outputs.
8.7
DIGITAL_IO
Figure48.ConfigurableDigitalIOmodule,usedtomonitorandcontrolnodesinthedesign
TheconfigurabledigitalI/Oisageneralpurposetoolthatcanbe
usedforbothmonitoringandactivatingnodesinthecircuit.
Unlikeitslegacycounterparts(IOB_xfamilyofdevices),withthe
DIGITAL_IOdeviceyouarenotconstrainedtolimitedsignalsof
8or16bits.Instead,anynumberofsignalsmaybeadded,and
anynumberofbitscanbeassignedtoasinglesignal.Youmay
alsohavedifferentnumbersofinputandoutputsignals.
ConfigurableDigitalIO
InLEDs[7..0]
Rot[7..0]
SpareOutB[7..0]
Zoom[7..0]
SpareOutC[7..0]
Flags[7..0]
SpareOutD[7..0]
EachinputbitcanbepresentedinarangeofdifferentstylesincludingLEDs,numeric,LEDdigits,or
asabar,andthesetofbitsalsopresentsasaHEXvalue.Outputstylescanalsovaryandinclude
LEDs,numeric,LEDdigits,andaslider.EachoutputcanhaveapredefinedInitialValueandwill
alsoincludeaHEXdisplay.Outputscanbesetorclearedindividuallyandthemethodwillvarywith
thestyleselected.AlternativelytypinginanewHEXvalueintheHEXfieldcanalterthevalueofthe
output.IfaHEXvalueisenteredyoumustclickthe
buttontooutputit.TheSynchronizebutton
canbeusedtotransferthecurrentinputvaluetotheoutputs.
128
AltiumDesignerTrainingModule
8.8
FPGADesign
LAX_x
Figure49.Thelogicanalyzerinstrumentatthetop,withtwovariationsoftheconfigurableLAXshownbelowit.
TheLAXcomponentonthelefthasbeenconfiguredtoaccept3differentsetsof64signals(signalsets),the
oneontherighthasonesignalsetof16bits.TheConfiguredialogisusedtosetthecapturewidth,memory
sizeandthesignalsets.
Thelogicanalyzerallowsyoutocapturemultiplesnapshotsofmultiplenodesinyourdesign.Use
theLAXtomonitormultiplenetsinthedesignanddisplaytheresultsasadigitalorananalog
waveform.
TheLAXisaconfigurablecomponent.Configureittosimultaneouslycapture8,16,31or64bits.
Thenumberofcapturesnapshotsisdefinedbytheamountofcapturememorythisrangesfrom1K
to4Kofinternalstoragememory(usinginternalFPGAmemoryresources).Itcanalsobeconfigured
touseexternalmemory.ThisrequiresyoutowireittoFPGAmemoryresourcesortooffchip
memory(e.g.DesktopNanoBoardMemory).
AfterplacingtheconfigurableLAXfromthelibrary,rightclickonthesymbolandselectConfigure
fromthefloatingmenutoopentheConfigure(logicanalyzer)dialog,whereyoucandefinethe
Capturewidth,memorysizeandthesignalsets.
TheConfigurableLAXincludesaninternalmultiplexer,thisallowsyoutoswitchfromonesignalset
toanotheratruntime,displayingthecapturedataofinterest.Youcanalsotriggeroffonesignalset
whileobservingtheresultsofanotherset.
NotethattheFPGAInstrumentslibraryincludesanumberofLAXcomponents.TheLAX
componentistheconfigurableversion,allothersarelegacyversions.
129
AltiumDesignerTrainingModule
FPGADesign
8.8.1 Waveformdisplayfeatures
Figure50.Digitalwaveformcaptureresultsfromthelogicanalyzer
Figure51.Analogwaveformcaptureresultsfromthelogicanalyzer
Thecaptureresultsaredisplayedintheinstrumentpanel.Therearealsotwowaveformdisplay
modes.Thefirstisadigitalmode,whereeachcapturebitisdisplayedasaseparatewaveformand
thecaptureeventsdefinethetimeline.Notethatthecaptureclockmustbesetinthelogicanalyzer
optionsforthetimelinetobecalculatedcorrectly.ClicktheShowDigitalWavesbuttontodisplay
thedigitalwaveform.
Thesecondwaveformmodeisananalogmode,wherethevalueonallthelogicanalyzerinputsis
displayedasavoltage,foreachcaptureevent.Thevoltagerangeisfromzerotothemaximum
possiblecountvalue,scaledtoadefaultof3.3V.ClicktheShowAnalogWavesbuttontodisplay
theanalogwaveform.
8.8.2 Zoominginandout
InboththeanaloganddigitalwaveformviewersitispossibletozoominandoutbyhittingthePage
UporPageDownkeysrespectively
8.8.3 Continuousdisplaymode
Waveformscapturedbythelogicanalyzercanbedisplayedasasinglepassorasacontinuously
updateddisplay.Continuousupdatescanbeenabled/disabledfromthelogicanalyzertoolbar.
Figure52.Enablingthecontinuouscapturemode.
130
AltiumDesignerTrainingModule
8.9
FPGADesign
TerminalConsole
Figure53.Terminalconsoleinstrumentrackfunctionsasadebugconsoleforembeddedapplications.
TheTERMINALdeviceisadebugconsolewhichallowsyoutotypetext
directlyinitsassociatedinstrumentpanelandsenditdirectlytothe
processorinyourdesign,tobehandledbytheembeddedsoftwarecode
runningtherein.Conversely,itallowsthedisplayoftextsentfromthat
processor. AlthoughclassedasoneofAltiumDesigner'svirtual
instruments,theTERMINALdeviceisreallyahybrid partinstrumentand
partWishbonecompliantslaveperipheral.Whereasotherinstrumentsare
configuredandoperateddirectlyfromaGUI,theTERMINALdevice
requiresinteractionatthecodelevel,toinitializeinternalregistersandto
writeto/readfromitsinternalstoragebuffers.
8.10
U1
TerminalConsole
STB_I
CYC_I
ACK_O
ADR_I[3..0]
DAT_O[7..0]
DAT_I[7..0]
WE_I
CLK_I
RST_I
INT_O[1..0]
TERMINAL
Exercise4AUsingembeddedinstruments
AworkingdesignofaPWMcircuitcompletewithembeddedinstrumentshasbeenpreparedto
illustratethefeaturesofFPGAinstruments.Yourinstructorwilltellyouwheretofinditonyourlocal
harddrive.
U5
CLK_BRD
CLK_BRD
CLK_BRD
CLK_TICK
IA[7..0]
O[15..0]
TRIGGER
J8B2_16B
U7
TIMEBASE
STATUS
U6
IB[7..0]
CLK_BRD
CLK
CLK_CAP
CHANNELS[15..0]
LogicAnalyser
LAX_1K16
U1
VCC CB8CEB
FREQ
Q[7..0]
FrequencyGenerator
CLKGEN
CE
C
CLK_TICK
CEO
TC
CLR
U3
A[7..0]
B[7..0]
U2
TEST_BUTTON
COMPM8B
INV
U8
AIN[7..0]
AOUT[7..0]
1Chx8BitDigitalIO
IOB_1X8
GT
LT
I0 U4
O[7..0]
I1
I2
I3
I4
I5
I6
I7
J8S_8B
GND
U9
FREQA
FREQB
CLK_TICK
CLK_BRD
JTAG_NEXUS_TDI
JTAG_NEXUS_TDO
JTAG_NEXUS_TCK
JTAG_NEXUS_TMS
TDI
TDO
TCK
TMS
VCC
TRST
J TAG
LEDS[7..0]
TIMEBASE
FrequencyCounter
FRQCNT2
J TAG
J TAG
J TAG
...
J TAG
J TAG
Figure54.PWMcircuitwithseveralembeddedinstrumentsconnected.
1. OpentheprovidedprojectanddownloadittoyourNanoBoard.
2. Followonyourowncircuitastheinstructordiscussesthevariousembeddedinstruments.
131
AltiumDesignerTrainingModule
FPGADesign
3. DoubleclicktheNanoBoardiconintheDevicesViewtoopentheinstrumentrackforthe
NanoBoardandsetitsclockfrequencyto50MHz.
Figure55.NanoBoardcontroller.
4. Openthefrequencygenerators
instrumentpanel.Ifthetimebase
indicatedinthewindownexttothe
SetTimeBasebuttonisnot50
MHzthenpresstheSetTime
Basebuttontoopenadialogbox
thatwillenableyoutosetit
correctly.TheRequire50/50
Dutycheckboxshouldbe
checked.
Thefrequencygeneratorshould
besetto1MHzasindicatedin
Figure.
Figure56.Counteroptionsdialog
Figure57.FrequencygeneratorPanel
5. Openthefrequencycounters
instrumentpanel.Selectthe
CounterOptionsbuttononthe
frequencycountermoduleand
makesuretheCounterTimeBase
isalsosetto50MHz(thesameas
theNanoBoardclockfrequency),
asshowninFigure57.PressOK.
UsetheModebuttonasnecessary
oneachchannelofthefrequency
countermoduletotogglethe
displaymodebetweenfrequency,
periodorcount.Youshouldgeta
similardisplaytowhatisdepicted
inFigure59.
Figure58.Counteroptionsdialog
132
AltiumDesignerTrainingModule
FPGADesign
Figure59.Frequencycountercontrolpanel
6. OpentheDigitalIOBsinstrumentpanel.
Figure60.DigitalIOBinstrumentcontrolpanel
7. ModifytheOutputsoftheIOBmoduleandobservechangesintheLEDs.
8. Adjusttheoutputfrequencyofthefrequencygeneratormoduletoalowerfrequencytry1KHz.
ObservetheimpactthishasontheLEDs.ModifytheOutputsoftheIOBandobservefurther
changesintheLEDs.
9. Adjusttheoutputfrequencyofthefrequencygeneratormodulebackto1MHz.
10. Openthelogicanalysersinstrumentcontrolpanel.
Figure61.Logicanalyserinstrumentcontrolpanel
11. SelectShowPanelonthelogicanalyzer.SetthepanelupasdepictedinFigure62.
Figure62.Logicanalysertriggeringoptions.
133
AltiumDesignerTrainingModule
FPGADesign
12. SelectOptionsonthelogic
analyser.Settheclockcapture
frequencyto1MHzthesameas
thefrequencygeneratormodule.
Adjusttheothercontrolstobethe
sameasshowninFigure63.
13. SelectArmandobservethe
waveformdisplayedinthewaveform
viewer.SelectContinuousCapture
fromtheLogicAnalyzermenuand
adjusttheIOBoutput.Observethe
changeinthePWMmarktospace
ratio.
Figure63.Logicanalysersetupoptions.
Figure64.Logicanalyzerwaveformwithbit7oftheIOBset.
Figure65.Logicanalyzerwaveformwithbits6&7oftheIOBset.
134
AltiumDesignerTrainingModule
8.11
FPGADesign
WherearetheInstruments?
TheimportantdifferentiatorbetweenAltiumDesignersembeddedinstrumentsandothersimulation
basedvirtualinstrumentsisthatAltiumDesignersembeddedinstrumentsaretruephysicaldevices
thataredownloadedintotheFPGAdeviceaspartofthedesign.Theinformationprovidedtothe
designerbytheembeddedinstrumentscanberelieduponasitistakenfromrealphysical
measurementstakenonchip.
FigureillustratesthispointasitshowstheFPGArealestateusedbytheembeddedinstruments.
Figure66.FloorplanofMyPWM.SchDocafterithasbeenplacedontoanFPGA.
8.12
Enablingembeddedinstruments
TheNanoBoardhardwareincorporatestheentireinfrastructurenecessarytosupportEmbedded
InstrumentsandallowthemtocommunicatewiththehostPC.Allvirtualinstrumentscommunicate
withthehostPCviaasoftJTAGchainthatconformstotheNexusstandard.ToenableNexuson
theNanoBoard,theNEXUS_JTAG_PORTandNEXUS_JTAG_CONNECTORmustbeplacedontothe
toplevelschematic.TheserespectivecomponentscanbefoundintheFPGAGeneric.IntLib
andFPGANB2DSK01PortPlugin.IntLibIntegratedLibraries.
135
AltiumDesignerTrainingModule
NEXUS_JTAG_PORT
JTAG
JTAG
JTAG
JTAG
.
.
.
JTAG
FPGADesign
NEXUS_JTAG_CONNECTOR
TDI
TDO
TCK
TMS
JTAG_NEXUS_TDI
JTAG_NEXUS_TDO
JTAG_NEXUS_TCK
JTAG_NEXUS_TMS
JTAG
TRST
VCC
Figure67.NEXUSJTAGPortandNEXUSJTAGConnector.
Tobeabletouseembeddedinstrumentsincustomdesigns,itisnecessarytoreserve4devicepins
fortheNEXUS_JTAG_CONNECTORandensurethatsufficientdeviceresourcesarepresentto
accommodatethevirtualinstrumentsinthedevice.TheJTAGsoftchainandothercommunications
chainspresentontheNanoBoardwillbediscussedfurtherinthenextsection.
136
AltiumDesignerTrainingModule
FPGADesign
9 InteractingwiththeNanoBoard
9.1
Overview
TheNanoBoardispivotaltorapidembeddedsystemsdevelopmentwithAltiumDesigner.Itcontains
arangeofperipheralsandexpansioncapabilitiestoallowittoadapttoabroadcrosssectionof
embeddedprojects.Inthissectionwewilldiscusstheconceptsnecessaryforadesignertomake
effectiveusetheNanoBoardspotential.
9.2
NanoBoardcommunications
TheNanoBoardcontains3primarycommunicationchannels.Acompleteunderstandingofthese
channelsisnotnecessarytobeginusingthetoolsuitehoweveritmaybeofinteresttodevelopers
keentomakeuseofAltiumDesignersdebuggingcapabilitiesontheirowncustomdesigns.
TheprimarypointofusercontroloftheNanoBoardisviatheDevicesView.Thisviewprovidesan
easytousevisualizationofthevariouscommunicationschainsactiveontheNanoBoard.
NanoTalk
Chain
JTAG
Hard
Chain
JTAG
Soft
Chain
Figure68.Devicesviewwithitsvariouscommunicationschannelshighlighted.
137
AltiumDesignerTrainingModule
FPGADesign
9.2.1 NanoTalkchain
NanoTalkistheproprietarycommunicationsprotocoldevelopedbyAltiumtoenablemultiple
NanoBoardstocommunicatewithoneanother.The10pinNanoTalkheaderscanbefoundonboth
theleftandrightedgesattheupperendoftheDesktopNanoBoard.Communicationsviathis
channelistotallytransparenttotheuser.Thereshouldbenoneedtointeractwiththisstandard.
9.2.2 JTAGHardChain
TheJTAGHardChainisaserialcommunicationschannelthatconnectsphysicaldevicestogether.
JTAGdevicescanbeconnectedendonendbyconnectingtheTDOpinofanupstreamdeviceto
theTDIpinofadownstreamdevice.ThehardJTAGchainisvisibleinthemiddleportionofthe
DevicesView.UsuallythisiswhereanFPGAwillbelocatedhoweverifyoualsohaveother
devicesthatareconnectedtotheJTAGchainsuchasaconfigurationdevicethenthesewillbe
visiblealso.
ThehardJTAGchaincanbeextendedbeyondtheNanoBoardthroughtheUserBoardAandUser
BoardBconnectors.Whenusingeitheroftheseconnectors,itisimperativethattheJTAGchainis
notbrokeni.e.theTDI/TDOchainmustbeloopedbacktotheNanoBoard.
9.2.3 JTAGSoftChain
TheJTAGSoftChainisaseparateJTAGchannelthatprovidescommunicationwiththeEmbedded
InstrumentsthatcanbeincorporatedintoanFPGAdesign.Thischainislabeledasasoftchain
sinceitdoesnotconnecttangiblephysicaldevicestogetherbutratherconnectssoftordownloadable
instrumentsthatresideinsideahardorphysicalFPGAdevice.
9.3
Technicalbackground
TD
I
TDI
P
Pa
arra
alllle
el
D
Da
atta F
Fllo
ow
JT
AG
G
JTA
Ce
ll
l
Cel
TD
O
TDO
Figure69.ConceptualViewofJTAGdataflows.
9.3.1 JTAGindepth
TheacronymJTAGstandsforJointTestApplicationGroupandissynonymouswithIEEE1149.1.
ThestandarddefinesaTestAccessPort(TAP),boundaryscanarchitectureandcommunications
protocolthatallowsautomatedtestequipmenttointeractwithhardwaredevices.Essentiallyit
enablesyoutoplaceadeviceintoatestmodeandthencontrolthestateofeachofthedevicespins
orrunabuiltinselftestonthatdevice.TheflexibilityoftheJTAGstandardhasalsoleadtoits
usageinprogramming(configuring)devicessuchasFPGAsandmicroprocessors.
Atminimum,JTAGrequiresthatthefollowingpinsaredefinedonaJTAGdevice:
TCK:TestClockInput
TMS:TestModeSelect
138
AltiumDesignerTrainingModule
FPGADesign
TDI:TestDataInput
TDO:TestDataOutput
TCKcontrolsthedatarateofdatabeingclockedintoandoutofthedevice.ArisingTCKedgeis
usedbythedevicetosampleincomingdataonitsTDIpinandbythehosttosampleoutgoingdata
onthedevicesTDOpin.
Figure70.UsingJTAGChaintoconnectmultipleJTAGdevicestogetherinadigitaldesign.
Figure70.JTAGTestAccessPort(TAP)StateMachine.
TheTestAccessPort(TAP)Controllerisastatemachinethatcontrolsaccesstotwointernal
registerstheInstructionRegister(IR)andtheDataRegister(DR).DatafedintothedeviceviaTDI
oroutofthedeviceviaTDOcanonlyeveraccessoneofthesetworegistersatanygiventime.The
registerbeingaccessedisdeterminedbywhichstatetheTAPcontrollerisin.Traversalthroughthe
TAPcontrollerstatemachineisgovernedbyTMS.
139
AltiumDesignerTrainingModule
FPGADesign
9.3.2 Nexus5001
TheflexibilityofJTAGforhardwaredebuggingpurposeshasflowedoverintothesoftwaredomain.
Inthesamewaythattestengineershavesoughtastandardizedmethodfortestingsilicon,software
engineershavealsosoughtastandardizedmeansfordebuggingtheirprograms.
In1998,theGlobalEmbeddedDebugInterfaceStandard(GEDIS)Consortiumwasformed.Inlate
1999thegroupmovedoperationsintotheIEEEISTOandchangedtheirnametotheNexus5001
ForumandreleasedV1.0ofIEEEISTO1999.InDecember2003,V2.0wasreleased.
TheNexus5001standardprovidesastandardizedmechanismfordebugtoolstointeractwithtarget
systemsandperformtypicaldebuggingoperationssuchassettingbreakpointsandanalyzing
variables,etc.Thereare4classesofNexuscomplianceeachwithdifferinglevelsofsupported
functionality.ThelowestlevelusesJTAGasthelowlevelcommunicationsconduit.
TheimplementationofNexus5001ontheDesktopNanoBoardhasbeenlabeledastheJTAGSoft
Chain.Itisaserialchainjustlikethehardchainhoweverratherthanconnectingphysicaldevices
together,itconnectsvirtualdevicestogether.Thesedevicesincludethesetofvirtualinstruments
thataresuppliedwithAltiumDesigneranddescribedinthefollowingchapter.Controlofdeviceson
theSoftChaincanbeperformedfromtheDevicesViewSoftChainDevicesarelocatedtowards
thebottomoftheDevicesViewundertheHardChain.
AswiththeJTAGHardChain,theSoftChaincanbetakenofftheNanoBoardviatheUserBoardA
andUserBoardBconnectors.Thisprovidesthemeansfortargetsystemstoalsoincludevirtual
instrumentsandtobenefitfromtheAltiumDesignerdevelopmentenvironment.SimilarlytotheHard
Chain,itisimperativethatacompleteloopbemaintainedbetweentheSoftChainTDIandTDO
connections.
9.4
TheNanoBoardcontroller
TheNanoBoardControllercanbeaccessedbydoubleclickingontheNanoBoardiconinthe
DevicesView.
Figure71.TheNanoBoardControllerInstrumentRack.
TheClockFrequencyindicatedinthewindowwillbesuppliedtothe
CLK_BRDportontheNanoBoard.Accessingthisclockoncustomdesignsis
assimpleasplacingtheCLOCK_BOARDcomponentfromtheFPGANB2DSK01Port
Plugin.IntLibLibrary.
P182
P182
CLK_BRD
SelectinganonstandardfrequencyispossiblebyclickingtheOtherFrequencybutton.The
NanoBoardclocksystememploysaseriallyprogrammableclocksource(partnumberICS30702)
thatiscapableofsynthesizinganyclockfrequencybetween6and200MHz.Advancedaccessto
theClockControlICregistersisavailablethroughtheClockControlOptionsbutton.Adatasheet
forthisdeviceisavailablefromtheICSwebsitehttp://www.icst.com/products/pdf/ics3070102.pdf.
AnonlineformusefulforcalculatingsettingsfortheclockcontrolICisalsoavailableat
http://www.icst.com/products/ics307inputForm.html.
TotherightoftheNanoBoardControllerisasectionwiththeheading
FlashRAM.TheFPGABootbuttonaffordsthefacilitytostoreadaughter
boardconfigurationfilethatwillgetautomaticallyloadedintothedaughter
boardonpowerup.TheEmbeddedbuttonexposesmemorythatcanbe
usedbytheuserapplicationtostorenonvolatleuserdata.The
EmbeddedMemorydeviceisaccessibleviatheSERIALFMEMORYcomponentintheFPGA
NB2DSK01PortPlugin.IntLibLibrary.
140
AltiumDesignerTrainingModule
9.5
FPGADesign
FPGAI/Oview
TodisplaytheInstrumentrackforadevice,doubleclickonthedeviceintheJTAGHardchain.
ClickingontheJTAGViewerPanelbuttonthenbringsuptheJTAGViewerPanel.
Figure72.TheHardDevicesinstrumentrack.
Figure73.TheFPGAI/OInstrumentRackandJTAGViewerPanel.
Thisinterfaceenablesthedevelopertoseeinrealtimetheflowofsignalsacrossthedevicespins.
Thiscanbeparticularlyusefulwhenensuringthatsignalsarebeingcorrectlypropagatedtoandfrom
thedevice.
PlacingatickintheLiveUpdatecheckboxwillcausethedisplaytoupdateinrealtime.
Alternatively,leavingtheLiveUpdatecheckboxclearandselectingtheupdateiconwillcause
signalinformationtobelatchedtothedisplayandheld.
CheckHideUnassignedI/OPinstoremoveclutterfromthedisplay.
TheBSDLInformationdropdownlistshouldonlyneedtobeaccessedfordeviceswhichare
unknowntoAltiumDesigner.Inthiscase,youwillneedtoprovidethelocationofthevendor
suppliedBSDLfileforthedeviceyouareviewing.
TheFPGAIOinstrumentrackisavailableforalldevicesontheJTAGHardChainincluding
devicesonauserboardthatisconnectedtotheJTAGHardChain.
141
AltiumDesignerTrainingModule
9.6
FPGADesign
Livecrossprobing
ProbedirectivescanbeplacedontheFPGA
schematiconanyI/Onetandwillupdateinrealtime
aslongastheHardDevicesInstrumentPanelis
displayed.UsethePlaceDirectivesProbeto
placeacrossprobeononeoftheI/Onets.
Figure74.UsingLiveCrossProbing.
9.7
1.
2.
3.
4.
5.
Exercise4BViewMyPWMontheNanoBoard
ReloadyourcircuitfromExercise3againandrunitontheNanoBoard.
OpentheJTAGViewerPanel.
ChecktheHideUnassignedI/OPinscheckboxandtheLiveUpdatecheckboxes.
ObservethechangeinswitchstatesandLEDsasyoutoggletheNanoBoardDIPswitches.
UsethePlaceDirectivesProbeoptiontoplaceaprobepointonthebusconnectedtothe
DIPSwitches.ObservetheprobevalueastheDIPSwitchesarechangedontheNanoBoard.
142
AltiumDesignerTrainingModule
FPGADesign
10 Creatingacorecomponent
10.1
Coreproject
AltiumDesignerprovidestheabilitytoencapsulateanentireFPGAcircuitintoasinglecomponent
thatcanbeusedasabuildingblockinotherprojects.Theseselfcontainedblocksarecalledcore
componentsandoffertheadvantageofdesignreuseanddesignsecurity.Corecomponentscanbe
synthesizedforatargetFPGAandmadeavailabletootherswithoutexposingtheunderlyingIP.
AcoreprojectisusedtocreateanFPGAcomponentthatmaybeusedmultipletimeswithinoneor
acrossmanyFPGAprojects.Theoutputofacoreprojectbehavesinasimilarfashiontoalibrary
componentinthatitbecomesanelementalunitthatisusedasacomponentinlargerdesigns.
Acoreprojectisusefulwhenyouwishtomakesomefunctionalityavailabletoabroaduserbasebut
youdonotwanttoexposetheIPusedtoimplementthefunctionality.
Figure75.UsingacorecomponentinanFPGAProject.
10.2
CreatingacorecomponentfromanFPGAproject
Itispossibletocreateacorecomponentfromscratchhoweveroftenwewishtocreateacore
componentfromanexistingFPGAdesignorproject.Ineithercaseablankcoreprojectmustfirstbe
created.IfthecorecomponentistobebasedonanexistingdesignthenuseProjectAdd
ExistingtoProjecttoaddtherelevantVHDL,Verilogand/orschematicdocumentstotheproject.
Ifthecorecomponentisbeingcreatedfromscratchthenitssourcedocumentswillneedtobe
createdinthesamewaythatanFPGAprojectisbuilt.
143
AltiumDesignerTrainingModule
10.3
FPGADesign
AwordaboutEDIF
EDIFisanacronymforElectronicDesignInterchangeFormat.Itwasoriginallydevelopedasa
standardizedformatfortransferringintegratedcircuitdesigninformationbetweenvendortools.
AltiumDesignercreatesEDIFfilesaspartofthesynthesisprocessandthesefilesarethenpassed
tothevendorbackendtoolsforcompleteFPGAplaceandroute.
AlthoughEDIFfilesconformtoastandard,theinformationwithinagivenEDIFfilemaycontain
vendorspecificconstructs.EDIFfilescannot,thereforebeconsideredasvendorindependent.
ItisalsoworthnotingthatalthoughEDIFfilesdooffersomeformofIPprotection,theyarereadable
byhumansandcanbedecipheredwithlittleeffort.TheyshouldnotbereliedupontomaintainIP
protection.
10.4
Settingupthecoreproject
OncethecoreprojecthasbeencreateditisimportanttomakeavailableitsEDIFmodelswhenyou
eventuallypublishit.MakesuretheIncludemodelsinpublishedarchivecheckboxistickedinthe
OptionstaboftheProjectOptionsdialog.
Figure76.Settingoptionsforacorecomponent.
YoumustnowspecifythefolderonyourharddiskthatyouwishtheEDIFmodelstobesavedinto.
ThisfolderwillbesearchedalongwiththestandardsystemEDIFfolders(\AltiumDesigner
6\Library\EDIF)whenyousynthesizeanydesign.ItisgoodpracticetokeepEDIFmodelsgenerated
fromcoreprojectsinasinglelocationforeasiersearching. Tospecifythelocationoftheuser
presynthesizedmodelfolder,openthePreferencesdialog,andnavigatetoFPGA>Synthesis.
144
AltiumDesignerTrainingModule
FPGADesign
Figure77. Specifyingthelocationofcorecomponentmodels.
10.5
Constrain/configure
TheconceptofconstraintfilesandconfigurationsiscentraltotheflexibilityofAltiumDesigner.They
provideamechanismtoallowFPGAcircuitstobedevelopedindependentofthefinalphysical
implementation.Ratherthanstoringdeviceandimplementationspecificdatasuchaspinallocations
andelectricalpropertiesinthesourceVHDLorschematicdocuments,thisinformationisstoredin
separatefilescalledConstraintfiles.ThisdecouplingofthelogicaldefinitionofanFPGAdesign
fromitsphysicalimplementationallowsforquickandeasyretargetingofasingledesigntomultiple
devicesandPCBlayouts.
ThereareanumberofclassesofconfigurationinformationpertinenttodifferentaspectsofanFPGA
project:
10.5.1 Deviceandboardconsiderations:
ThespecificFPGAdevicemustbeidentifiedandportsdefinedinthetoplevelFPGAdesignmustbe
mappedtospecificpinnumbers.
10.5.2 Deviceresourceconsiderations:
Insomedesignsitmaybeadvantageoustomakeuseofvendorspecificresourcesthatareunique
toagivenFPGAdevice.Someexamplesarehardwaremultiplicationunits,clockmultipliersand
memoryresources.
145
AltiumDesignerTrainingModule
FPGADesign
10.5.3 Projectordesignconsiderations:
Thiswouldincluderequirementswhichareassociatedwiththelogicofthedesign,aswellas
constraintsonitstiming.Forexample,specifyingthataparticularlogicalportmustbeallocatedto
globalclocknet,andmustbeabletorunatacertainspeed.
Aconfigurationisasetofoneormoreconstraintfilesthatmustbeusedtotargetadesignfora
specificoutput.Themigrationofadesignfromprototype,refinementandproductionwilloften
involveseveralPCBiterationsandpossiblyevendifferentdevices.Inthiscase,aseparate
configurationwouldbeusedtobringtogetherconstraintfileinformationforeachdesigniteration.
Eachnewconfiguration(anditsassociatedconstraintfile(s)isstoredwiththeprojectandcanbe
recalledatanytime.
Tosummarize:
Constraintfilesstoreimplementationspecificinformationsuchasdevicepinallocationsand
electricalproperties.
AConfigurationisagroupingofoneormoreconstraintfilesanddescribeshowtheFPGA
projectshouldbebuilt.
10.6
Creatinganewconstraintfile
Whentargetingadesignforauserboard,itisoftennecessarytomanuallycreateatleastone
constraintfile.Thisconstraintfilewouldincludeataminimumthedevicethatisbeingtargetedand
mayincludeanynumberofadditionalconstraintsappropriateforthetargetPCB.Ascoresmay
oftenbesynthesizedforanumberofpossibletargets,itisusefultodiscusstheprocessofmanually
constrainingandconfiguringadesigninthecontextofcreatingcoreprojects.
Beforeaconfigurationcanbebuilt,aconstraintfilemustexist.Constraintfileshavetheextension
.Constraint.ConstraintfilesforusewiththeDesktopNanoBoardcanbefoundinthe\Program
Files\AltiumDesigner6\Library\Fpga\directory.Ingeneralitisadvisabletotakeacopy
ofthesefilesandstoreitinyourprojectdirectorybeforeaddingittotheproject.Thiswaytheproject
iskeptselfcontainedandanyeditsyoumayinadvertentlymakewillnotaffectthesupplied
constraintfile.
Toaddyourown,newconstraintfile,rightclickontheprojectnameintheProjectspaneland
selectAddNewToProjectConstraintFile.
Anewblankconstraintfilewillappear.TospecifythetargetdeviceselectDesignAdd/Modify
ConstraintPartandtheBrowsePhysicalDevicesdialogwillopen.
Figure78.TheBrowsePhysicalDevicesdialog,whereyouselectthetargetFPGA.
146
AltiumDesignerTrainingModule
FPGADesign
Figure79.Basicconstraintfile.
Selectthevendor,family,deviceand
temperature/speedgradesasdesiredandclick
OK. Alinesimilartotheoneabovewillbe
automaticallyinsertedintotheconstraintfile:
Savetheconstraintfile.Typicallyitwouldbe
namedtoreflectitsrole forexampleifthe
targetdevicewasaXilinxSpartan3FPGA
mountedonyourprojectPCByoumightcallit
MyProject_Spartan3_1500.Constraint.
Youwillnoticetheconstraintfilehasbeen
addedtotheprojectunderthesettingstab.
Figure80.ProjectwithconstraintFile.
10.7
Creatingaconfiguration
Aspreviouslymentioned,configurationsgroupanumberofconstraintfilestogethertocreateasetof
instructionsfortheFPGAbuildprocess.Todefineaconfiguration:
RightclickontheprojectnameintheProjectspanelandselectConfigurationManager
Figure81.Specifyingaconfigurationusingtheconfigurationmanager.
Ifyouhavejustrecentlycreatedanewconstraintsfile,youwillseeitlistedundertheConstraint
Filename.Existingconstraintfilesthatcurrentlyarentintheprojectcanbeaddedbyselecting
theAddbuttonnexttotheConstraintFilestext.
Todefineanewconfiguration,selecttheAddbuttonnexttotheConfigurationstext.Adialog
willappearrequestingyoutoprovideanameforthenewconfiguration.Thenamecanbe
arbitrarybutitishelpfulifitprovidessomeindicationastowhattheconfigurationis for.
147
AltiumDesignerTrainingModule
FPGADesign
Havingdefinedthenewconfiguration,youmaynowassignconstraintfilestoitbytickingtheir
associatedcheckbox.HerewehaveassignedtheconstraintfileMyConstraint_Spartan3_1500
totheTarget_XC3S1500configuration.
ClickOKtosavetheconfiguration.
Figure82.Specifyingaconfigurationusingtheconfigurationmanager.
Althoughtheabovesimplisticexampleonlyhadoneconstraintfileandoneconfiguration,thepower
ofconfigurationsreallybecomesapparentasthedesignmatures.Belowweseehowadesignhas
beentargetedtomultipleplatforms:
Figure83.Exampleofaprojectwithmultipleconfigurationsdefined.
Configurationscanbeupdatedormodifiedasdesiredatanytimethroughouttheprojects
developmentbyreturningtotheConfigurationManagerdialog.
10.8
Synthesize
Nowthatwehavedefinedaconfiguration
wearereadytosynthesizethecoreforthe
target.
WiththetoplevelFPGAdocumentopen
selectDesignSynthesize.Ifwehad
definedmorethanoneconfigurationand
wishedtosynthesizeallconfigurationsat
oncewecouldselectDesign
SynthesizeAllConfigurations.
Ifyouhavenotalreadynominatedthe
toplevelentity/configurationinthe
SynthesistaboftheOptionsforCore
Figure84.SpecifyinganFPGAprojectstopleveldocument.
Project,theChooseTopleveldialogwill
appear.EnterthecoreprojectnameorselectfromthedropdownlistandclickOKtocontinue.
TheprojectwillbesynthesizedresultinginthegenerationofVHDLfilesfortheschematic,EDIF
filesfortheschematicwiringandparts,andasynthesislogfile.Thesewillallbelocatedunder
theGeneratedfolderintheprojectpanel.
YouwillobservetheconfigurationnameinbracketsbesidetheGeneratedFolder.Hadwe
synthesizedmorethanoneconfigurationthenaseparateGeneratedfolderwouldhaveappeared
foreachofthedefinedconfigurations.
148
AltiumDesignerTrainingModule
FPGADesign
Confirmthatthesynthesisprocesscompleted
successfullybyobservingthesynthesislogfile.
Alinetowardsthebottomofthereportshould
indicatewhetheranyerrorswereencountered.
10.9
Publish
Nowwecanpublishthecoreproject.Thiswillzip
together(archive)alltheEDIFfilesinthecore
projectsProjectOutputsfolderandthencopythis
totheuserEDIFmodelsfolderthatwasspecified
earlier.
SelectDesignPublish.Iftheerrormessage
cannotfindworkingfolderappears,make
sureyouhavesetuptheUsepresynthesized
Figure85.Filesgeneratedaftersynthesizingthedesign
modelfolderoptionintheFPGAPreferences
dialog.
ChecktheMessagespaneltoensurethedesignhasbeensuccessfullypublished.
Savethecoreprojectfile.
10.10 Creatingacoreschematicsymbol
Thecoreprojecthasbeensuccessfullysynthesizedandpublished.Itwouldbepossibleatthispoint
forotherpersonneltomakeuseofyourcorethroughaVHDLinstantiationprocess.Thiscanbea
messyaffair.Afarsimpleroptionwouldbeforthemtouseaschematicsymbolthatislinkedtoyour
coreandassociatedEDIFfiles.Todothis,weneedtocreateourownschematicsymbolfromthe
corecomponent.
WiththetoplevelFPGAdocumentopenselectDesignGenerateSymbol.
Figure86.Creatingacorecomponentsymbol.
ClickYeswhenyouareaskedifyouwanttocreateanewschematiclibrary.Apopupwillappear,
whereyoucanspecifytheappearanceofthenewlygeneratedsymbol.Anewschematiclibrary
(Schlib1.SchLib)willbeautomaticallycreatedandopenedtodisplaythegeneratedsymbol.By
defaultthecomponentnamewilltakeonthesamenameasthecoreprojectname.
149
AltiumDesignerTrainingModule
FPGADesign
Figure87.Specifyingcorecomponentoptions.
Fromwithinthelibraryeditor,selectthecomponentintheLibrarypanelandselecttheEdit
button.TheLibraryComponentPropertiesdialogwillbedisplayed.Notethatseveral
parametershavebeenaddedtoindicatewhichchildmodelsarerequiredtoberetrievedfromthe
publishedEDIFzipfiles.
Figure88.Specifyingthepropertiesofthenewlycreatedcorecomponentsymbol.
ClickingontheEditPinsbuttonwillenablefurthermodificationofthepropertiesandappearance
oftheschematicsymbol.
Fromtheschematiclibraryeditor,adjustthesymbolpropertiesasappropriateandsavethe
component.Savethelibrarybeforeexiting.
150
AltiumDesignerTrainingModule
FPGADesign
Figure89.Editingthecorecomponentpins.
10.11 Usingacorecomponent
Whenacorecomponentissynthesizedandpublished,theEDIFmodelisarchivedintothelocation
specifiedintheFPGAPreferencesdialog.Anyprojectthatsubsequentlyusesthecorecomponent
mustensurethattheEDIFarchivecanbefoundwithinthesearchpath.Thesearchsequencefor
EDIFmodelsis:
$project_dir
$user_edif\$vendor\$family
$user_edif\$vendor
$user_edif
$system_edif\$vendor\$family
$system_edif\$vendor
$system_edif
Notethatthesearchlocationsincludestheprojectdirectorywhichmakesitusefulifyouneedto
transferthedesigntoanotherPCthatdoesnothavetheuserEDIFmodelslocationdefined.
151
AltiumDesignerTrainingModule
FPGADesign
10.12 Exercise5CreateacorecomponentfromMyPWM
1. CreateanewcoreprojectandcallitMyPWMCore.PrjCor.Notethatthefilenamemustnothave
spacesinit.
2. SettheIncludemodelsinpublishedarchivecheckboxintheProjectOptionsdialog.
3. InthePreferencesdialog,gotoFPGASynthesis,andselectanoutputpathforEDIFfiles.
Thispathshouldnotincludeanyspaces.
4. AttachtheexistingMyPWM.SchDocthatyoucreatedaspartofexercise3.
5. CreateaprojectlevelconstraintfileandcallitMyPWMPrj.Constraint.Addthefollowingtothis
constraintfile:
Record=Constraint|TargetKind=Port|TargetId=CLK_BRD|FPGA_CLOCK_PIN=True
Record=Constraint|TargetKind=Port|TargetId=CLK_BRD|FPGA_CLOCK=True
Record=Constraint|TargetKind=Port|TargetId=CLK_BRD|FPGA_CLOCK_FREQUENCY=50Mhz
Figure90.UpdatestobemadetoMyPWMPrj.Constraintfile.
6. CreateaconstraintfileeachforanAlteraCycloneIIdeviceaswellasaXilinxSpartan3device.
7. Createaconfigurationthatlinkseachoftheindividualdeviceconstraintfileswiththeproject
constraintfile.
8. Synthesizeallconfigurationsandpublishthedesign.ChecktheUserPresynthesizedmodel
Folder(assetinStep3)usingwindowsexplorerandviewthedirectoriesthatarecreatedand
theircontents.
9. CreateacoreschematicsymbolandsaveittothelibraryMyCoreLib.SchLib
10. CreateanewFPGAprojectandschematicthatmakesuseofyourPWMcoreandtestitonthe
NanoBoard.
CLK_BRD
U1
CLK_BRD
LEDS[7..0]
LEDS[7..0]
ON
SW[7..0]
SW[7..0]
1 2 3 4 5 6 7 8
TEST_BUTTON
TEST_BUTTON
MyPWMCore
Figure90.TestprojectusedtotestthefunctionofMyPWMCore.
152
AltiumDesignerTrainingModule
FPGADesign
11 FPGAdesignsimulation
AltiumDesignersupportsbehavioralsimulationofVHDLdesigns.Thisisparticularlyusefulwhen
verifyingthefunctionaloperationofdigitalcircuitspriortoimplementingtheminsideanFPGA.
11.1
Creatingatestbench
Beforesimulationcanbegin,aVHDLTestbenchfilemustbecreatedtodrivethesimulation
session.Conceptually,theTestbenchstraddlestheDesignUnderTest(DUT)anddrivestheDUTs
inputswhilstobservingitsoutputs.
VHDLTestbench
DUT
Inputs
DesignUnderTest(DUT)
DUT
Outputs
Figure91.ConceptualviewofhowaVHDLtestbenchinteractswiththeDesignUnderTest(DUT).
AltiumDesignerprovidesaconvenientmethodforbuildingaVHDLTestbenchbasedontheinputs
andoutputsofthenominatedDUT.Ashelltestbenchfilecanbeautomaticallycreatedbythe
system.
Openaschematicdocumentandselect ToolsConvertCreateVHDLTestbench
fromthemenu.
OpenaVHDLdocumentandselectDesignCreateVHDLTestbench.
AnewVHDLdocumentwillbecreatedwiththeextension.VHDTSTandwillbeaddedtotheproject.
WithintheTestbenchfilewillbeacommentinsertstimulushere.ByplacingVHDLcodeatthis
pointyoucancontroltheoperationofthesimulationsession.Ataminimum,theTestbenchmustset
alloftheDUTsinputstoaknownstate.IftheDUTrequiresaclockthenthattoomustbeprovided
bytheTestbench.MostsimulationerrorsoccurasaresultoftheTestbenchfailingtoproperly
initializetheinputsoftheDUT.
11.2
AssigningtheTestbenchDocument
OnceyouhavecreatedtheTestbenchfilebutbeforeasimulationcanbegin,AltiumDesignerneeds
tobeformallytoldwhichVHDLdocumentintheprojectwillbeusedtodrivethesimulation.Select
ProjectOptionsbyrightclickingontheFPGAprojectintheProjectspanelorusethemenuto
selectProjectProjectOptionsSelecttheSimulationtabfromwithintheProjectOptionsdialog
andselecttheappropriate TestbenchDocument fromthedropdownlist.
Figure9218.Specifyingthetestbenchdocument
153
AltiumDesignerTrainingModule
11.3
FPGADesign
Initiatingasimulationsession
Asimulationsessioncanbeinitiatedby
selectingSimulatorSimulatefromthe
menuorbyclickingthesimulationbutton
intheVHDLToolstoolbarwhilstaVHDL
documentisactiveinthemainwindow.
11.4
Projectcompileorder
Whenyoufirstrunasimulationfromatestbench,AltiumDesignermayneedtoestablishthe
compilationorderoftheVHDLdocuments.Whilstperformingthisprocess,youmayseeanerror
appearintheMessagespanelwiththemessage:UnboundinstanceDUTofcomponentDonot
beconcernedasthisisnormalwhenyoufirstrunasimulation.
Figure93.Messagespanel.
Afterabriefmoment,adialogmayappear
promptingyoutospecifythetoplevel
documentforsimulation(Figure94).
Thecompilationorderoftheprojectcanbe
changedatalatertimeifnecessaryby
selectingProjectProjectOrder orbyright
clickingontheFPGAprojectintheProjects
panelandselectingProjectOrder.
Figure94.Choosingthetopleveldocument.
154
AltiumDesignerTrainingModule
FPGADesign
11.5
Settingupthesimulation
display
TheSimulationSignalsdialog(Figure95)is
automaticallypresentedatthebeginningofa
simulationoritcanbeaccessedviaSimulator
Signals.
TheWatchNameisthenameofthesignaldeclared
insidetheblockofVHDLcode.
SignalsmustbeEnabledinordertobeapartofthe
simulation.Furthermore,iftheyneedtobe
displayedaspartofthesimulationoutputthen
ShowWavemustalsobeselected.
TheWaveformviewer(Figure95)providesa
visualizationofthestatusofeachofthedisplayed
signals.
Figure9519.Specifyingsignalstodisplayinthe
simulation.
Theicon nexttothebusnameindicatesabus
signal.Clickingonthisiconwillexpandthebus
intoitsindividualsignalsforcloserinspection.
Thetimecursor(indicatedbythepurplevertical
bar)canbedraggedalongthetimeaxisviathe
mouse.Thecurrentpositionofthecursoris
providedinthetimebaracrossthetopofthe
display.
Zoominginoroutisachievedbypressingthe
PageUporPageDownkeysrespectively.
Thedisplayformatoftheindividualsignalscan
bealteredviathemenuitemToolsFormat
andRadix.
Figure96.Thewaveformviewer
155
AltiumDesignerTrainingModule
11.6
FPGADesign
Runninganddebuggingasimulation
Runningasimulationisreasonablystraightforwardwithallthe
stepping/runningfunctionsthatyoumightwishtousebeing
availablefromtheSimulatormenuortheVHDLToolstoolbar.
RunForeverwillrunthesimulationindefinitelyuntilStopis
pressed.ThiscommandisusedtorunaVHDLsimulationuntil
therearenochangesoccurringinthesignalsenabledinthe
simulation.
UsetheRun(foratimestep)commandtorunthecurrent
simulationforauserspecifiedperiodoftime(timestep).
Runfor (thelasttimestep)willrunthesimulatorforthesame
periodoftimeasspecifiedinthelastRuncommand.
RuntoTimewillrunthesimulatortoanabsolutetime.
Selectingatimepriortowherethesimulationhasalready
simulatedtowillcausethesimulatortodonothing.
RuntoCursorisusefulwhendebuggingVHDLsourceand
willcausethesimulatortorununtilthedefinedcursorlocation
isencounteredinasourceVHDLdocument.Thesimulatorwill
simulateeverythinguptotheselectedline.Makesurethatthe
Showexecutionpointoptionisenabled,intheDebugging
OptionsregionoftheFPGASimulationDebuggerpageof
thePreferencesdialog(Figure97).
CustomStep(Runsimulationtothenextdebugpoint):This
commandisusedtorunthecurrentsimulation,uptothenext
executablelineofcodeinthesourceVHDLdocuments.The
nextexecutablecodepointcanbeanywhereinthecodeand
thereforethecommandcanbeconsideredtobestepping
Figure97.Thesimulatormenu
throughthecodeinparallel,ratherthanthesequentiallybased
stepintoandstepovercommands.
StepTime:Thiscommandisusedtorunthecurrentsimulation,executingcodeinthesource
VHDLdocumentsuntiltimeincrementsi.e.alldeltatimeeventspriortothenexttimeincrement
willbeexecuted.
DeltaStep:Thiscommandisusedtorunthecurrentsimulationforasinglecycle,whichcanbe
calledaDeltastep.ADeltastepcanbesosmallthatnochangeinrealtimeisseen.
StepIntoenablestheusertosinglestepthroughtheexecutablelinesofcodeinthesource
VHDLdocuments.Ifanyprocedures/functionsareencountered,steppingwillcontinueintothe
calledprocedureorfunction.
StepOverissimilartoStepIntoexceptthatifanyprocedures/functionsareencountered,
steppingwillexecutetheentireprocedure/functionasasingleexecutablelineandwillnotstep
intoit.
Stopwillpausethesimulatoratitscurrentsimulationpoint.Apausedsimulationcancontinueto
berunwithanyoftheabovecommands.
Resetwillabortthecurrentsimulation,clearanywaveformsandresetthetimebackto0.
Endterminatestheentiresimulationsession.Endedsimulationscannotberestartedotherthan
byinitiatinganothersimulationsession.
156
AltiumDesignerTrainingModule
FPGADesign
Figure98.Thesimulationdebuggeroptionsinthepreferencesdialog.
157
AltiumDesignerTrainingModule
11.7
FPGADesign
Exercise6CreateatestbenchandsimulateMyPWM
1. OpentheprojectyoucreatedinExercise2andmakeMyPWM.VHDtheactivedocument.
2. SelectDesignCreateVHDLTestbenchfromthemenu. Updatethetestbenchtobethe
sameasthecodelistedinFigure99.
Figure99.TestbenchcodefortestingMyPWM
3. Updatethetestbenchdocument,toplevelentity/configurationandtoplevelarchitecture
fieldsinthesimulationtaboftheProjectProjectOptionsdialog.
4. Compilethetestbenchdocumentandrectifyanyerrors.
5. RunthesimulationbyselectingSimulatorSimulate.
6. Runthesimulatorfor2us.
7. ObservethewaveformsforLEDS[0]andLEDS[1].Isitwhatyouexpect?Trychangingthe
PWMperiodbychangingthevalueofSWinthetestbench.
158
AltiumDesignerTrainingModule
FPGADesign
12 Review
159