![图片[1]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080809684-61729728489.png?v=1729728489)
![图片[2]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080810503-81729728490.png?v=1729728491)
| 选项 | 
说明 | 
| User editor | 
一般软件自带的编辑器功能有限,而外部编辑器功能要强大很多。所以建议大家使用外部编辑器。在User editor中输入编辑器的路径。 | 
| Use user editor as default editor for all files。 | 如果希望每次点击文件时是通过外部编辑器打开的,可以勾选Use user editor as default editor for all files。反之,如果希望使用自带编辑器打开则不用勾选。 | 
| Top level project path | 
指定新建工程目录。 | 
| Enable flow data integrity check | 
|
| Open last project on startup | 
如果勾选此选择,会打开上次关闭的工程 | 
| open file using default system application | 
|
| Use last window layout setting | 
使用上次软件关闭时的窗口布局。 | 
| Auto-correct Tcl command | 
在tcl命令窗口中输入命令时可以自动修改存在的错误。 | 
| Auto-load Place and Route data | 
打开软件是自动加载布局布线的数据。建议关闭。 | 
| Migrate interface design with device change | 
修改器件时,interface desiger中的配置也要修改。 | 
| Enable IP upgrades prompt on project load | 
用新版本打开老的软件建的工程时,打开该选项会提示IP需要更新,如果不想更新IP可以关闭这个选项。 | 
![图片[3]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080812961-91729728492.png?v=1729728492)
二、新建工程
Step1:点击设置
Step2:在Top level project path中输入路径
Step3:点击File -> Open Project,路径会指向step2中设置的路径
注意:易灵思的工程名为<project>.xml,而不是<project>.peri.xml,<project>.peri.xml用于存放interface designer中的参数设置。
![图片[4]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080813629-11729728493.png?v=1729728494)
![图片[5]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080814327-71729728494.png?v=1729728495)
![图片[6]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080816165-21729728496.png?v=1729728496)
把retiming和seq_opt设置为0
![图片[7]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080817944-41729728497.png?v=1729728497)
点击ok,新建工程完成。
三、添加源文件
![图片[8]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080818243-11729728498.png?v=1729728498)
![图片[9]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080819826-41729728499.png?v=1729728499)
四、管脚约束
这里我们以一个LED点灯为例,代码如下:
![图片[10]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080820121-41729728500.png?v=1729728501)
Efinty是通过interface designer工具来设置IO等和外设相关的接口及电气属性的。Interface designer操作界面的打开通过下面的Open Interface Desinger来实现。
![图片[11]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080822791-91729728502.png?v=1729728502)
Core 与interface的关系
Eifinty采用的把逻辑资源和硬核资源分开的架构,代码部分只针对逻辑资源,也就是我们这里提到的Core,而IO及其他硬核部分的配置在interface Designer工具中。下图是interface与Core的关系,它们之间通过被称作Siganl Interface的连线资源实现互联。
因为习惯问题,使用者在最初一定会存在一些问题,但是习惯之后它也是有不少优势存在的。比如说,在前期的硬件设计中,只需要在Interface Designer中添加已添加的IO及其他需要的硬件接口,并通过一键检测就可以很清楚的知道与外设的连接是否合理,不需要考虑内部因为没有完整的程序而可能被优化的风险。另外有些interface的选项在修改之后可以不需要先编译而直接生成数据流。
![图片[12]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080823362-51729728503.png?v=1729728504)
                        interface与core的关系
![图片[13]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080825532-71729728505.png?v=1729728505)
                            interface界面
告诉软件FPGA目前的bank电压,硬件电路的bank电压要和interface中的一致,如果电压设置不一致可能存在长时间运行致使芯片失效。设置位置在Device Setting –>I/O Banks
![图片[14]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080826269-01729728506.png?v=1729728506)
Step1:右键选择GPIO
Step2:根据选择的是单线还是多线来选择Create Block还是Create Bus
Step3:编辑IO属性,IO属性如下:
| 选项 | 选择 | 说明 | 
| Mode | Input, output, inout, clkout  | 
Input:把FPGA管脚设置为输入;
 Output:把FPGA管脚设置为输出; Inout:把FPGA管脚设置为双向管脚; Clkout:把FPGA管脚设置为时钟输出  | 
| Connection Type | Normal,gclk,pll_clkin,VREF | gclk走全局时钟网线,可以驱动PLL也可以直接驱动内部逻辑
 用于普通的GPIO; PLL_CLKIN表示这个IO是用于驱动PLL的; 用于存储器的参考管脚  | 
| Register Option | None,register | 是否添加IO寄存器,推荐添加。 | 
| I/O Standard | 3.3v,1.8v,1.2V,1.5v | 设置IO的电平 | 
| Double Data I/O Option | None,normal,resync | 是否设置IO为双延采样 | 
| Clock | 当打开IO寄存器时需要添加指定寄存器的时钟 | |
| Drive Strength | 1,2,3,4 | 设置输出IO的驱动能力 | 
| Enable Slew Rate | Yes,no | 是否命名能slew rate | 
![图片[15]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080827213-11729728507.png?v=1729728508)
![图片[16]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080829893-01729728509.png?v=1729728509)
![图片[17]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080830804-61729728510.png?v=1729728510)
![图片[18]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080831914-101729728511.png?v=1729728511)
![图片[19]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080832882-81729728512.png?v=1729728513)
如果单独编辑某个信号属性是不能编辑的。如下图所示。
![图片[20]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080834429-11729728514.png?v=1729728514)
![图片[21]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080835882-51729728515.png?v=1729728515)
![图片[22]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080836174-91729728516.png?v=1729728516)
检测Interface设计是否存在问题。
![图片[23]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080837382-91729728517.png?v=1729728517)
保存设置,点击Check Design,检查interface是否存在问题。
再点Generate Efinity Constraint Files,我们就可以在Result –> interface下面看到生成一些文件。通过xxx_template.v复制例化接口
![图片[24]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080838695-51729728518.png?v=1729728518)
| Instance Name | 
用户定义 | 
|
| PLL Resourec | 
||
| Output Clock Inversion | 
on,off | 
翻转时钟输出 | 
| Connection Type | 
gclk,
 rclk  | 
时钟类型 | 
| Clock Source | 
External,
 Dynamic,Core  | 
External指时钟通过IO驱动;Dynamic:支持多路时钟选择;Core:时钟通参考通过core供给 | 
| Automated clock
 Calculation  | 
打开时钟计算和设置窗口 | 
![图片[25]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080839916-91729728519.png?v=1729728520)
![图片[26]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080841728-61729728521.png?v=1729728521)
![图片[27]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080842192-61729728522.png?v=1729728522)
![图片[28]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080843645-101729728523.png?v=1729728523)
八 添加约束
添加约束的目的是为了告诉FPGA你的设计指标及运行情况。在上面的生成约束之后,在Result àxx.sdc中提供约束参考(请注意该文件不能直接添加到工程中,需要热复制到别的指定目录),对于gclk时钟需要手动添加约束的时钟周期,对于PLL生成的时钟已经约束完整。
编译完成之后可以查看时序报告,也可以通过routing àxx.timing.rpt来查看路径详细延时信息,如果想查看更可以通过指令来打印或者通过print_critical_path来控制打印的路径数量 。
![图片[29]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080844594-91729728524.png?v=1729728524)
![图片[30]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080845944-71729728525.png?v=1729728525)
编译
点击dashboard中Toggle Automated Flow来设置是单步还是全程编译(暗色是单步),下面是综合,布局,布线,生成数据流,stop的相应按键。软件左下角会的编译进行提示编译进程。
![图片[31]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080846464-101729728526.png?v=1729728526)
八 添加debug
8.1通过向导添加debug
点击Open Debugger Wizard
(1)设置Buffer Depth:
这个是需要采集信号的深度。
(2)Input Pipeline Stage
    如果时序不好,可以把Pipleline设置大点保证时序。
(3)Capture control
(4)JTAG USER TAP
JTAG有4个User tap,选择可以用的即可,主要是不要与在用的冲突即可以。
(5)修改时钟域,
下图看到undefined的时钟域,点击undefined就可以选择时钟,当然对于存在时钟的也是可以修改的。
(6)Probe Type
Probe Type是用于选择该信号要是用于看波形还是用于触发,有三种选择,DATA AND trigger,DATA ONLY和TRGGER ONLY;字面意思也很好理解,即用作看波形也用作触发,只用作看波形,只用作触发。
![图片[32]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080847471-21729728527.png?v=1729728527)
![图片[33]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080848539-101729728528.png?v=1729728528)
8.2手动debug
手动debug的方式就是自己一个个添加debug的信号 ,当然这种方式也可以添加 VIO,VIO可以通过JTAG产生一些控制信号。手动添加debug的方式如下。
step1:点击Open Debugger 打开Efinity Debugger页面,在Perpectives下面选择Profile Editor.
![图片[34]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080849720-01729728529.png?v=1729728530)
Step2:根据需要选择添加VIO或者LA.
![图片[35]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080850688-41729728530.png?v=1729728530)
Step3: 以添加LA为例,点击右侧的add_probe来添加需要的信号,然后在Name中修改信号名字,Width中指定信号位宽及Probe Trigger or Data中设置信号的触发属性。如果要删除信号就点击右侧的带“X”的remove Probe.
另外可以指定Data Depth,也就是数据采样深度,Input Pipeline Stage对可以数据打拍,用于优化时序。
![图片[36]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080851578-21729728531.png?v=1729728532)
step4 添加VIO。根据需要选择vio界面的add source和add probe 来添加自己需要的信号。如果要删除信号则选择remove source/probe.
![图片[37]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080852929-21729728532.png?v=1729728533)
step5:点击Generate,会在工程目录下就会生成一个debug_top.v,把该文件添加到工程并例化。效果如下。
![图片[38]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080853561-21729728533.png?v=1729728534)
step6.添加JTAG。打开interface Designer,右击选择JTAG User Tap,添加JTAG Block,并指定JTAG resource,如下图中选择JTAG user1.然后生成约束例化信号。
![图片[39]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080855128-11729728535.png?v=1729728536)
![图片[40]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080856606-91729728536.png?v=1729728537)
注意通过向导添加Debugger和通过手动添加debuger这两种方式不能共存。另外要注意在interface Designer中添加了User Tap之后,在添加向导时要选择不同的User Tap号,否则会提示接口有占用。如下图指示“ERROR: jtage resource = JTAG USER1 has been occupied”。
![图片[41]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080857893-61729728537.png?v=1729728538)
8.3 在线调试
该步骤需要在配置FPGA之后再能操作。
触发条件的设置
捕获设置:
•触发位置
•分段数量
•窗口尝试
![图片[42]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080858374-91729728538.png?v=1729728539)
![图片[43]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080900765-01729728540.png?v=1729728540)
![图片[44]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080901933-81729728541.png?v=1729728541)
![图片[45]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080902998-41729728542.png?v=1729728542)
![图片[46]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080903196-61729728543.png?v=1729728543)
| 主动模式(SPI Active)— AS模式 | 通过SPI专用插座在线烧写FLASH,FLASH离线烧写好了再焊接,FPGA自己主动通过从非易失性的SPI FLASH读取bit流进行加载,支持X1 X2 X4,x8(不同的FPGA支持的位宽有区别) | 
| 被动模式(SPI Passive)— PS模式 | 
 | 
| JTAG模式 | 上位机通过JTAG口将bit流文件发送到FPGA,对FPGA进行加载 | 
| SPI Active using JTAG bridge — Bridge模式 | 通过FPGA的JTAG口烧写和FPGA连接的SPI FLASH | 
![图片[47]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080904714-71729728544.png?v=1729728544)
![图片[48]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080905217-101729728545.png?v=1729728546)
十 仿真
易灵思为所有IP提供了仿真模型
以FIFO为例 ,在工具栏中选择IP Catalog
![图片[49]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080906156-31729728546.png?v=1729728547)
另外 关于interfce Designer接口的仿真模型在路径C:Efinity2023.1ptsim_modelsVerilog下。
![图片[50]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080907857-21729728547.png?v=1729728548)
十一、查看软件版本
![图片[51]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080908414-71729728548.png?v=1729728548)
在Help ->About。打开软件详细版本,由于软件存在很多补丁,所说说明版本时,要给出完整的版本号。
当软件版本号不对应时可能不打开软件,因为低版本不能兼容高版本。
![图片[52]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080909926-11729728549.png?v=1729728550)
另外peri.xml里面也是有版本号的,当软件打开不开的时候可以对比安装的软件版本号与工程开发用的版本号是否存在不兼容。
![图片[53]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080910440-21729728550.png?v=1729728550)
广告时间
![图片[54]-Efinity入门使用-v8-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241024080911261-71729728551.png?v=1729728552)





没有回复内容