用户工具

站点工具


icore4tx_fpga_12

差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
icore4tx_fpga_12 [2020/05/22 16:53]
fmj [四、Modelsim 仿真工具调用]
icore4tx_fpga_12 [2022/04/01 11:37] (当前版本)
sean
行 3: 行 3:
 |技术支持电话|**0379-69926675-801**||| |技术支持电话|**0379-69926675-801**|||
 |技术支持邮件|Gingko@vip.163.com||| |技术支持邮件|Gingko@vip.163.com|||
-|技术论坛|http://​www.eeschool.org||| 
 ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^ ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^
 |  V1.0  |  2020-05-22 ​ |  gingko ​ |  初次建立 ​ |  |  V1.0  |  2020-05-22 ​ |  gingko ​ |  初次建立 ​ | 
行 25: 行 24:
 **1、安装步骤:** **1、安装步骤:**
   * 1. 双击 modelsim-win64-10.1a-se.exe 文件开始安装。   * 1. 双击 modelsim-win64-10.1a-se.exe 文件开始安装。
 +{{ :​icore4tx:​icore4tx_fpga_12_1.png?​direct |图12.1}}
   * 2. 双击.exe 文件后进入如下界面,点击 Next。   * 2. 双击.exe 文件后进入如下界面,点击 Next。
 +{{ :​icore4tx:​icore4tx_fpga_12_2.png?​direct |图12.2}}
   * 3. 红框1处选择安装路径,然后点击 Next。弹出窗口询问是否建立文件夹,选择Yes.   * 3. 红框1处选择安装路径,然后点击 Next。弹出窗口询问是否建立文件夹,选择Yes.
 +{{ :​icore4tx:​icore4tx_fpga_12_3.png?​direct |图12.3}}
   * 4. 此界面点击 Agree 即可进入下一步的安装   * 4. 此界面点击 Agree 即可进入下一步的安装
 +{{ :​icore4tx:​icore4tx_fpga_12_4.png?​direct |图12.4}}
   * 5. 接下来进入进度条界面,此过程中弹出的界面全部点击 Yes。   * 5. 接下来进入进度条界面,此过程中弹出的界面全部点击 Yes。
 +{{ :​icore4tx:​icore4tx_fpga_12_5.png?​direct |图12.5}}
   * 6. 此界面点击 Cancel, 进入下一个安装步骤。   * 6. 此界面点击 Cancel, 进入下一个安装步骤。
 +{{ :​icore4tx:​icore4tx_fpga_12_6.png?​direct |图12.6}}
   * 7. 点击Yes,电脑立即重启;点击 No,空闲时手动重启,​大家自行选择。至此安装结束。   * 7. 点击Yes,电脑立即重启;点击 No,空闲时手动重启,​大家自行选择。至此安装结束。
 +{{ :​icore4tx:​icore4tx_fpga_12_7.png?​direct |图12.7}}
 **2、破解步骤:** ​ **2、破解步骤:** ​
   * 1.接下来进行破解。   * 1.接下来进行破解。
     * 1) 首先将MentorKG.exe和patch_dll.bat文件复制到安装目录的win64 文件夹下。     * 1) 首先将MentorKG.exe和patch_dll.bat文件复制到安装目录的win64 文件夹下。
-    * 2) 然后将Win64文件夹中的mgls64.dll和mgls.dll文件的只读属性去掉,运行patch_dll.bat,等待生成TXT格式的license文件,存到安装目录下,命名为LICENSE.TXT。 +    * 2) 然后将Win64文件夹中的mgls64.dll和mgls.dll文件的只读属性去掉,运行patch_dll.bat,等待生成TXT格式的license文件,到安装目录下,命名为LICENSE.TXT。 
-    * 3) 然后运行 crack.bat 文件,生成 txt 文件后另存到安装文件的根目录下+    * 3) 恢复,mgls.dll和mgls64.dll两个文件的只读属性
   * 2.接下来添加系统环境变量,控制面板->​系统和安全->​系统->​高级系统设置->​环境变量->​新建。变量名MGLS_LICENSE_FILE,​变量值为 License.txt 的路径(点击浏览文件,找到License.txt文件,选中即可),然后点击“确定”结束。   * 2.接下来添加系统环境变量,控制面板->​系统和安全->​系统->​高级系统设置->​环境变量->​新建。变量名MGLS_LICENSE_FILE,​变量值为 License.txt 的路径(点击浏览文件,找到License.txt文件,选中即可),然后点击“确定”结束。
-  +{{ :icore4tx:icore4tx_fpga_12_8.png?direct |图12.8}} 
-{{ :icore4tx:icore4tx_fpga_11_1.png?direct |图11.1}} +
  
 ==== 四、Modelsim 仿真工具调用 ==== ==== 四、Modelsim 仿真工具调用 ====
行 45: 行 49:
   * 1.在正式建立Modelsim仿真工程之前,将实验八呼吸灯的工程复制过来,然后建立一个文件夹,用于存放Modelsim工程,本实验建立的文件夹名为counter_sim。   * 1.在正式建立Modelsim仿真工程之前,将实验八呼吸灯的工程复制过来,然后建立一个文件夹,用于存放Modelsim工程,本实验建立的文件夹名为counter_sim。
   * 2.打开FPGA工程,右击,点击New Source。   * 2.打开FPGA工程,右击,点击New Source。
 +{{ :​icore4tx:​icore4tx_fpga_12_9.png?​direct |图12.9}}
   * 3. 选择新建文件类型为Verilog Test Fixture,File name命名为counter_tb,然后点击Next。注意测试文件的存放路径,本实验将其和FPGA工程的源文件放到一起。   * 3. 选择新建文件类型为Verilog Test Fixture,File name命名为counter_tb,然后点击Next。注意测试文件的存放路径,本实验将其和FPGA工程的源文件放到一起。
 +{{ :​icore4tx:​icore4tx_fpga_12_10.png?​direct |图12.10}}
   * 4. 点击Next。   * 4. 点击Next。
 +{{ :​icore4tx:​icore4tx_fpga_12_11.png?​direct |图12.11}}
   * 5. 点击Finish   * 5. 点击Finish
 +{{ :​icore4tx:​icore4tx_fpga_12_12.png?​direct |图12.12}}
   * 6. 在工程代码编辑区可以看到下图所示内容,为ISE自动生成的测试文件代码。可以看到,测试文件例化了工程文件的顶层模块,并设置了仿真的时间单位和精度。并对时钟状态进行了初始化。如下图所示:   * 6. 在工程代码编辑区可以看到下图所示内容,为ISE自动生成的测试文件代码。可以看到,测试文件例化了工程文件的顶层模块,并设置了仿真的时间单位和精度。并对时钟状态进行了初始化。如下图所示:
 +{{ :​icore4tx:​icore4tx_fpga_12_13.png?​direct |图12.13}}
   * 7.向测试文件中添加代码:always #5 clk_25M = ~clk_25M;​生成时钟信号。产生模拟的时钟信号,测试文件主要包含内容如下图所示。可以看到,测试工程是将FPGA工程的顶层模块作为Modelsim工程的一个子模块,例化到测试工程中,并给予时钟等外部激励信号,并通过initial语句对激励信号赋初值。   * 7.向测试文件中添加代码:always #5 clk_25M = ~clk_25M;​生成时钟信号。产生模拟的时钟信号,测试文件主要包含内容如下图所示。可以看到,测试工程是将FPGA工程的顶层模块作为Modelsim工程的一个子模块,例化到测试工程中,并给予时钟等外部激励信号,并通过initial语句对激励信号赋初值。
-    * a)Initial语句是顺序执行的,且仿真开始阶段只执行一次。Initial块内可以通过“# ​ 数字”的方式实现延时控制。如“#​ 100”即等待100个时间单位后再执行下一条语句。因此可以通过延时控制模拟外部激励信号或者复位信号等。 +    * a) Initial语句是顺序执行的,且仿真开始阶段只执行一次。Initial块内可以通过“# ​ 数字”的方式实现延时控制。如“#​ 100”即等待100个时间单位后再执行下一条语句。因此可以通过延时控制模拟外部激励信号或者复位信号等。 
-    * b)Always 块内的语句是循环执行的,如添加的“always #5 clk_25M = ~clk_25M;​”语句,即等待5个时间单位后clk_25M信号进行翻转,并循环执行,以此产生周期10个时间单位的模拟时钟信号。 +    * b) Always 块内的语句是循环执行的,如添加的“always #5 clk_25M = ~clk_25M;​”语句,即等待5个时间单位后clk_25M信号进行翻转,并循环执行,以此产生周期10个时间单位的模拟时钟信号。 
 +{{ :​icore4tx:​icore4tx_fpga_12_14.png?​direct |图12.14}}
   * 8.双击打开Modelsim软件,点击File  New Project…,新建modelsim工程。   * 8.双击打开Modelsim软件,点击File  New Project…,新建modelsim工程。
 +{{ :​icore4tx:​icore4tx_fpga_12_15.png?​direct |图12.15}}
   * 9.弹出窗中填写工程名字,最好和顶层文件名字一致。Project Location 是工作目录,通过点击Brose按钮,将目录选择为前面建立的文件夹cnt_sim。Default Library Name采用工具默认的work,然后点击OK。   * 9.弹出窗中填写工程名字,最好和顶层文件名字一致。Project Location 是工作目录,通过点击Brose按钮,将目录选择为前面建立的文件夹cnt_sim。Default Library Name采用工具默认的work,然后点击OK。
 +{{ :​icore4tx:​icore4tx_fpga_12_16.png?​direct |图12.16}}
   * 10.弹出如下窗口,询问是建立新文件还是添加新文件;本实验是在实验八的基础上进行的,由已经编写完成的工程文件,因此这里点击Add Existing File,即添加文件。   * 10.弹出如下窗口,询问是建立新文件还是添加新文件;本实验是在实验八的基础上进行的,由已经编写完成的工程文件,因此这里点击Add Existing File,即添加文件。
 +{{ :​icore4tx:​icore4tx_fpga_12_17.png?​direct |图12.17}}
   * 11.弹出窗口点击Browse,找到FPGA工程的源文件,选中后点击打开。   * 11.弹出窗口点击Browse,找到FPGA工程的源文件,选中后点击打开。
 +{{ :​icore4tx:​icore4tx_fpga_12_18.png?​direct |图12.18}}
   * 12.点击下图中OK。   * 12.点击下图中OK。
 +{{ :​icore4tx:​icore4tx_fpga_12_19.png?​direct |图12.19}}
   * 13.Project界面里可以看到源文件已经添加进去,点击Close关闭Add items to the Project界面。   * 13.Project界面里可以看到源文件已经添加进去,点击Close关闭Add items to the Project界面。
 +{{ :​icore4tx:​icore4tx_fpga_12_20.png?​direct |图12.20}}
   * 14.点击工具栏的编译按钮进行编译,编译完成无报错之后,如下图所示。   * 14.点击工具栏的编译按钮进行编译,编译完成无报错之后,如下图所示。
 +{{ :​icore4tx:​icore4tx_fpga_12_21.png?​direct |图12.21}}
   * 15.在Library中work目录下,选中测试文件counter_tb.v,双击或者右键点击Simulate。   * 15.在Library中work目录下,选中测试文件counter_tb.v,双击或者右键点击Simulate。
 +{{ :​icore4tx:​icore4tx_fpga_12_22.png?​direct |图12.22}}
   * 16.然后点击工具栏的SimulateStart Simulation…。   * 16.然后点击工具栏的SimulateStart Simulation…。
 +{{ :​icore4tx:​icore4tx_fpga_12_23.png?​direct |图12.23}}
   * 17.点击work前面的“+”,选中测试文件counter_tb,取消Enable optimization前面的“√”,然后点击OK。   * 17.点击work前面的“+”,选中测试文件counter_tb,取消Enable optimization前面的“√”,然后点击OK。
 +{{ :​icore4tx:​icore4tx_fpga_12_24.png?​direct |图12.24}}
   * 18. Sim页面选中counter_tb下的uut模块,可以看到Objects窗口出现counter模块的信号列表,选中该列表中需要观察的信号,右键点击Add Wave   * 18. Sim页面选中counter_tb下的uut模块,可以看到Objects窗口出现counter模块的信号列表,选中该列表中需要观察的信号,右键点击Add Wave
 +{{ :​icore4tx:​icore4tx_fpga_12_25.png?​direct |图12.25}}
   * 19. 可以看到Wave界面已经添加了需要观察的信号,选中cnt1信号,右键点击,选择RadixUnsigned,将cnt1变量的值调整成无符号十进制显示。同样的操作将cnt2也调整成无符号十进制数显示。   * 19. 可以看到Wave界面已经添加了需要观察的信号,选中cnt1信号,右键点击,选择RadixUnsigned,将cnt1变量的值调整成无符号十进制显示。同样的操作将cnt2也调整成无符号十进制数显示。
 +{{ :​icore4tx:​icore4tx_fpga_12_26.png?​direct |图12.26}}
   * 20. 点击Run-all,运行仿真。   * 20. 点击Run-all,运行仿真。
 +{{ :​icore4tx:​icore4tx_fpga_12_27.png?​direct |图12.27}}
   * 21. 可以直观的看到,led的控制信号的周期性变化,如下图所示(为了直观展示信号的周期变化,将counter文件中cnt1和cnt2的值累加到50后进行清零)。   * 21. 可以直观的看到,led的控制信号的周期性变化,如下图所示(为了直观展示信号的周期变化,将counter文件中cnt1和cnt2的值累加到50后进行清零)。
-**  其代码如下:**+{{ :​icore4tx:​icore4tx_fpga_12_28.png?​direct |图12.28}}
  
 ==== 五、实验现象 ==== ==== 五、实验现象 ====
icore4tx_fpga_12.1590137596.txt.gz · 最后更改: 2020/05/22 16:53 由 fmj