用户工具

站点工具


icore4tx_fpga_2

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
icore4tx_fpga_2 [2020/04/28 16:34]
zgf [三、实验原理]
icore4tx_fpga_2 [2022/04/01 11:36] (当前版本)
sean
行 2: 行 2:
 |技术支持电话|**0379-69926675-801**||| |技术支持电话|**0379-69926675-801**|||
 |技术支持邮件|Gingko@vip.163.com||| |技术支持邮件|Gingko@vip.163.com|||
-|技术论坛|http://​www.eeschool.org||| 
 ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^ ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^
 |  V1.0  |  2020-04-28 ​ |  gingko ​ |  初次建立 ​ |  |  V1.0  |  2020-04-28 ​ |  gingko ​ |  初次建立 ​ | 
行 25: 行 24:
   * 本实验以点亮FPGA_LED,并控制其闪烁作为主要目标,在此基础上根据led的驱动原理,建立工程、编写led控制程序、配置GPIO。通过本实验,学习零基础构建FPGA工程并驱动LED闪烁的过程。   * 本实验以点亮FPGA_LED,并控制其闪烁作为主要目标,在此基础上根据led的驱动原理,建立工程、编写led控制程序、配置GPIO。通过本实验,学习零基础构建FPGA工程并驱动LED闪烁的过程。
   * led的驱动原理是通过程序,控制FPGA引脚IO的电平,从而实现对led的控制。led的硬件原理图如图2.1所示。从图中可以看出,led正极接3.3V电平,负极接到FPGA的引脚上。当FPGA_LED引脚为高电平时LED灭,为低电平时LED亮。   * led的驱动原理是通过程序,控制FPGA引脚IO的电平,从而实现对led的控制。led的硬件原理图如图2.1所示。从图中可以看出,led正极接3.3V电平,负极接到FPGA的引脚上。当FPGA_LED引脚为高电平时LED灭,为低电平时LED亮。
-{{ :​icore4tx:​icore4tx_fpga_2_1.png?​direct&​600 |图2.1}}+{{ :​icore4tx:​icore4tx_fpga_2_1.png?​direct&​400 |图2.1}}
 ==== 四、工程建立和编译 ==== ==== 四、工程建立和编译 ====
- 1、双击Xilinx FPGA 开发软件图标打开软件,出现下面界面,如图2.2所示,点击红框中New Project…。 +1、双击Xilinx FPGA 开发软件图标打开软件,出现下面界面,如图2.2所示,点击红框中New Project…。 
-{{ :​icore4tx:​icore4tx_fpga_2_2.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_2.png?​direct&​700 ​|图2.2}}
-  * 图2.2+
 2、点击新建图标出现下面对话框,给新工程命名led,并选择好工程存放路径;顶层文件是Verilog HDL 语言编写的,因此这里将顶层文件的格式选为HDL,具体如下图所示。 2、点击新建图标出现下面对话框,给新工程命名led,并选择好工程存放路径;顶层文件是Verilog HDL 语言编写的,因此这里将顶层文件的格式选为HDL,具体如下图所示。
-{{ :​icore4tx:​icore4tx_fpga_2_3.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_3.png?​direct |图2.3}}
-  * 图2.3+
 3、弹出窗口中选择对应的FPGA器件,iCore4TX双核心板的FPGA型号为Xilinx的XC6SLX16-2FTG256。则在下面界面选择FPGA器件时按照图中所示设置即可。然后点击Next。 3、弹出窗口中选择对应的FPGA器件,iCore4TX双核心板的FPGA型号为Xilinx的XC6SLX16-2FTG256。则在下面界面选择FPGA器件时按照图中所示设置即可。然后点击Next。
-{{ :​icore4tx:​icore4tx_fpga_2_4.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_4.png?​direct |图2.4}}
-  * 图2.4+
 4、直接点击Next,弹出新建工程信息汇总,如下图,直接点击Finish。 4、直接点击Next,弹出新建工程信息汇总,如下图,直接点击Finish。
-{{ :​icore4tx:​icore4tx_fpga_2_5.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_5.png?​direct |图2.5}} 
-  * 图2.5 +5、进入工程编辑界面,可以看到左边的工程文件目录区、右边的代码编辑区以及下边栏的工程信息打印区,如图2.6所示。 
-5、 进入工程编辑界面,可以看到左边的工程文件目录区、右边的代码编辑区以及下边栏的工程信息打印区,如图2.6所示。 +{{ :​icore4tx:​icore4tx_fpga_2_6.png?​direct&​700 ​|图2.6}}
-{{ :​icore4tx:​icore4tx_fpga_2_6.png?​direct |}} +
-  * 图2.6+
 6、在工程文件目录区可以看到刚刚建立的新工程led,选中led工程,右键弹出下拉栏中点击New Source,新建Verilog文件。 ​ 6、在工程文件目录区可以看到刚刚建立的新工程led,选中led工程,右键弹出下拉栏中点击New Source,新建Verilog文件。 ​
-{{ :​icore4tx:​icore4tx_fpga_2_7.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_7.png?​direct&​700 ​|图2.7}}
-  * 图2.7+
 7、弹出窗口中,在左侧栏中选中Verilog Module,并将Verilog 文件命名为led;文件命名栏下面是新建文件的保存路径。这里选择保存路径时可以在工程文件夹下新建一个src文件夹,专门用于存储Verilog Source 文件。各项都设置好以后,点击Next。 7、弹出窗口中,在左侧栏中选中Verilog Module,并将Verilog 文件命名为led;文件命名栏下面是新建文件的保存路径。这里选择保存路径时可以在工程文件夹下新建一个src文件夹,专门用于存储Verilog Source 文件。各项都设置好以后,点击Next。
-{{ :​icore4tx:​icore4tx_fpga_2_8.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_8.png?​direct |图2.8}}
-  * 图2.8+
 8、弹出窗口中设置led模块的端口信号,这里点击Next。 8、弹出窗口中设置led模块的端口信号,这里点击Next。
-{{ :​icore4tx:​icore4tx_fpga_2_9.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_9.png?​direct |图2.9}}
-  * 图2.9+
 9、弹出窗口是新建的源文件led.v的信息提示,点击Finish。 9、弹出窗口是新建的源文件led.v的信息提示,点击Finish。
-{{ :​icore4tx:​icore4tx_fpga_2_10.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_10.png?​direct |图2.10}}
-  * 图2.10+
 10、在主界面可以看到左边工程目录区多了led模块文件,右边代码编辑区是软件自动生成的模块信息。如下图所示。 10、在主界面可以看到左边工程目录区多了led模块文件,右边代码编辑区是软件自动生成的模块信息。如下图所示。
-{{ :​icore4tx:​icore4tx_fpga_2_11.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_11.png?​direct&​700 ​|图2.11}}
-  * 图2.11+
 11、向led 模块module led中添加工程代码,通常一个完整的模块由module和endmodule为开始和结尾,除此外还包括模块名、端口变量及类型的定义、硬件语言描述、内部变量定义等信息,如此组成一个完整的功能模块,如图2.12所示。 11、向led 模块module led中添加工程代码,通常一个完整的模块由module和endmodule为开始和结尾,除此外还包括模块名、端口变量及类型的定义、硬件语言描述、内部变量定义等信息,如此组成一个完整的功能模块,如图2.12所示。
-{{ :​icore4tx:​icore4tx_fpga_2_12.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_12.png?​direct&​650 ​|图2.12}}
-  * 图2.12 +
- +
 12、程序编写完成后进行编译,检查语法错误;首先在工程目录文件区选中顶层模块led,然后在工程目录区下边的Design栏,找到Synthesize – XST,右键点击Run,如图2.13所示。 12、程序编写完成后进行编译,检查语法错误;首先在工程目录文件区选中顶层模块led,然后在工程目录区下边的Design栏,找到Synthesize – XST,右键点击Run,如图2.13所示。
-{{ :​icore4tx:​icore4tx_fpga_2_13.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_13.png?​direct&​700 ​|图2.13}} 
-  * 图2.13 +13、编译通过会在Synthesize – XST前面出现一个对号,表示没有语法错误。同时在工程编辑区会显示编译信息,如寄存器和逻辑门等的资源消耗情况。\\ 
-13、编译通过会在Synthesize – XST前面出现一个对号,表示没有语法错误。同时在工程编辑区会显示编译信息,如寄存器和逻辑门等的资源消耗情况。 +
 14、接下来是给模块端口列表里的输入输出信号分配引脚,采用ucf文件绑定引脚信息。首先在工程文件目录区右键选择New Source … 选项。弹出窗口中,文件格式选择Implementation Constraints File选项,左边分别输入文件名和保存路径,点击Next。 14、接下来是给模块端口列表里的输入输出信号分配引脚,采用ucf文件绑定引脚信息。首先在工程文件目录区右键选择New Source … 选项。弹出窗口中,文件格式选择Implementation Constraints File选项,左边分别输入文件名和保存路径,点击Next。
-{{ :​icore4tx:​icore4tx_fpga_2_14.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_14.png?​direct |图2.14}} 
-  * 图2.14 +15、弹出的窗口直接点击Finish,完成引脚分配文件led.ucf文件的建立。在右边编辑区输入引脚绑定信息,格式为:\\ 
-15、弹出的窗口直接点击Finish,完成引脚分配文件led.ucf文件的建立。在右边编辑区输入引脚绑定信息,格式为:+
 net 端口名称 ​ LOC = 引脚编号| IOSTANDARD = “电压” ; net 端口名称 ​ LOC = 引脚编号| IOSTANDARD = “电压” ;
   * 例如:   * 例如:
     * net  clk  LOC  =  p4  |  IOSTANDARD = “LVCMOS33”     * net  clk  LOC  =  p4  |  IOSTANDARD = “LVCMOS33”
 led模块只有时钟输入信号clk_25M 和输出信号led。只需在ucf文件中添加这两个引脚的绑定信息即可。然后选中Design栏下的Implement Design,右键点击,然后点击Run,进行布局布线编译。完成后如下图所示。 led模块只有时钟输入信号clk_25M 和输出信号led。只需在ucf文件中添加这两个引脚的绑定信息即可。然后选中Design栏下的Implement Design,右键点击,然后点击Run,进行布局布线编译。完成后如下图所示。
-{{ :​icore4tx:​icore4tx_fpga_2_15.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_15.png?​direct&​700 ​|图2.15}}
-  * 图2.15+
 16、接下来生成可执行文件,可执行文件是ISE编译软件根据编写的程序和管教信息以及约束信息等生成的.bit文件。通过JTAG方式可下载到FPGA运行,但是不能直接固化到Flash中。在左侧Design栏下,右键选中Generate Programming File,点击Run。待编译成功,Generate Programming File 前面也会变成绿色对号。 16、接下来生成可执行文件,可执行文件是ISE编译软件根据编写的程序和管教信息以及约束信息等生成的.bit文件。通过JTAG方式可下载到FPGA运行,但是不能直接固化到Flash中。在左侧Design栏下,右键选中Generate Programming File,点击Run。待编译成功,Generate Programming File 前面也会变成绿色对号。
-{{ :​icore4tx:​icore4tx_fpga_2_16.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_16.png?​direct&​700 ​|图2.16}}
-  * 图2.16+
 ==== 五、程序下载 ==== ==== 五、程序下载 ====
- 
 1、首先将下载器连接到iCore4TX核心板的JTAG接口,和MicroUSB 线连接到连接到iCore4TX 的核心板上,并给板子供电。 1、首先将下载器连接到iCore4TX核心板的JTAG接口,和MicroUSB 线连接到连接到iCore4TX 的核心板上,并给板子供电。
-{{ :​icore4tx:​icore4tx_fpga_2_17.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_17.png?​direct&​600 ​|图2.17}}
-  * 图2.17+
 2、本例程采用iMPACT的下载方式。点击Configure Target Device 前面的“+”,然后选中“Manage Configuration Project(iMPACT)”,双击运行或者右键单击Run。如图所示。 2、本例程采用iMPACT的下载方式。点击Configure Target Device 前面的“+”,然后选中“Manage Configuration Project(iMPACT)”,双击运行或者右键单击Run。如图所示。
-{{ :​icore4tx:​icore4tx_fpga_2_18.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_18.png?​direct&​700 ​|图2.18}}
-  * 图2.18+
 3、然后在弹出窗口中点击左上角的Launch Wizard。 3、然后在弹出窗口中点击左上角的Launch Wizard。
-{{ :​icore4tx:​icore4tx_fpga_2_19.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_19.png?​direct |图2.19}}
-  * 图2.19+
 4、出现如下界面,直接点击OK,默认选择JTAG。 4、出现如下界面,直接点击OK,默认选择JTAG。
-{{ :​icore4tx:​icore4tx_fpga_2_20.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_20.png?​direct |图2.20}}
-  * 图2.20+
 5、弹出提示中点击Yes,添加“.bit”文件。 5、弹出提示中点击Yes,添加“.bit”文件。
-{{ :​icore4tx:​icore4tx_fpga_2_21.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_21.png?​direct |图2.21}}
-  * 图2.21+
 6、在弹出的文件路径窗口中,找到前面生成的“.bit”文件,选中后点击Open。 6、在弹出的文件路径窗口中,找到前面生成的“.bit”文件,选中后点击Open。
-{{ :​icore4tx:​icore4tx_fpga_2_22.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_22.png?​direct |图2.22}}
-  * 图2.22+
 7、此窗口中点击OK。 7、此窗口中点击OK。
-{{ :​icore4tx:​icore4tx_fpga_2_23.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_23.png?​direct |图2.23}}
-  * 图2.23+
 8、弹出的对话框中选择No。 8、弹出的对话框中选择No。
-{{ :​icore4tx:​icore4tx_fpga_2_24.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_24.png?​direct |图2.24}}
-  * 图2.24+
 9、返回到ISE的iMPACT界面;选中芯片图标,单击右键选择Program; 9、返回到ISE的iMPACT界面;选中芯片图标,单击右键选择Program;
-{{ :​icore4tx:​icore4tx_fpga_2_25.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_25.png?​direct |图2.25}}
-  * 图2.25+
 10、弹出的提示窗口中单击OK,如果一切正常下载成功,iMPACT界面会出现蓝色的Program Succeeded提示字样。表明程序已经下载至FPGA。此时可以观察到FPGA_LED闪烁。 10、弹出的提示窗口中单击OK,如果一切正常下载成功,iMPACT界面会出现蓝色的Program Succeeded提示字样。表明程序已经下载至FPGA。此时可以观察到FPGA_LED闪烁。
   * **注意:**   * **注意:**
 添加“.bit”文件时,还可以在iMPACT界面,点击芯片图标,右键选择Assign New Configuration File…。后面的操作步骤不变。 添加“.bit”文件时,还可以在iMPACT界面,点击芯片图标,右键选择Assign New Configuration File…。后面的操作步骤不变。
-{{ :​icore4tx:​icore4tx_fpga_2_26.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_26.png?​direct&​700 ​|图2.26}}
-  * 图2.26+
 ==== 六、实验结果: ==== ==== 六、实验结果: ====
 可以观察到FPGA_LED闪烁。 可以观察到FPGA_LED闪烁。
-{{ :​icore4tx:​icore4tx_fpga_2_27.png?​direct |}} +{{ :​icore4tx:​icore4tx_fpga_2_27.png?​direct&​400 ​|图2.27}} 
-  * 2.27+ 
 +==== 七、备注:闪退问题 ==== 
 +如果遇到“open Project”闪退,或者编译时闪退,可网上搜索关键字“ISE 14.7 闪退”,解决办法基本一致。下面是解决步骤:\\  
 +1、第一步 
 +  * 找到ISE安装目录下的文件夹: 
 +    * C:​\Xilinx\14.7\ISE_DS\ISE\lib\nt64 ​        ​(如果在其他盘安装,切换盘符,找到ISE的安装目录) 
 + 
 +  * 对文件夹下的两个文件作如下操作: 
 +    * 将libPortability.dll重名为libPortability.dll.orig 
 +    * 将 libPortabilityNOSH.dll 复制一份,然后将这个复制重命名为libPortability.dll 
 +2、第二步 
 +  * 寻找安装Xilinx_ISE的安装目录下的文件夹: 
 +    * C:​\Xilinx\14.7\ISE_DS\common\lib\nt64 ​    ​(如果在其他盘安装,切换盘符,找到ISE的安装目录) 
 + 
 +  * 对文件夹下的两个文件作如下操作: 
 +    * 将libPortability.dll重名为libPortability.dll.orig 
 +    * 然后将已经复制好的libPortabilityNOSH.dll文件复制到该文件夹下,并重命名为libPortability.dll
  
icore4tx_fpga_2.1588062863.txt.gz · 最后更改: 2020/04/28 16:34 由 zgf