网站备案要多长时间,网站内容更新用什么,用帝国软件做网站的心得,电脑版网站转手机版怎么做文章目录 背景1、前言2、流程1、新建工程2、编写代码3、时序约束4、分配管脚1、手动分配管脚2、使用ucf文件分配管脚 5、配置工程6、下载程序 3、win10与ISE的bug解决方案4、固化程序5、ISE搭配Modelsim软件的使用1、关联modelsim路径2、添加TB文件3、编译仿真库实现功能仿真4、… 文章目录 背景1、前言2、流程1、新建工程2、编写代码3、时序约束4、分配管脚1、手动分配管脚2、使用ucf文件分配管脚 5、配置工程6、下载程序 3、win10与ISE的bug解决方案4、固化程序5、ISE搭配Modelsim软件的使用1、关联modelsim路径2、添加TB文件3、编译仿真库实现功能仿真4、门级仿真6、ISE无法编译XILINX库文件的解决办法 6、使用ISE自带的内嵌仿真器ISim 背景
关于ISE 14.7 是支持所有系列的XILINX器件的之前一直想入手ISE作为三大工具之一也是必须要掌握的。一直耽搁耽搁归根结底其实还是自己的学习渴望不够强烈如果学习渴望足够强烈时间总会挤出来的所以这一点上我感到深深的自责和愧疚之感。后悔也没啥用了那也只能现在抓紧抓紧再抓紧吧。。。。来自处女座的苦恼
1、前言
由于vivado的诞生ISE停留在了ISE 14.7但是ISE 14.7是支持spartan 6的。 基本的流程如下 可以看到这个流程和我们之前用Alteral的也是一样的。
2、流程
1、新建工程 选择器件内嵌的综合工具默认是XST仿真器选择modelsim-SE的verilog仿真
2、编写代码 然后我们就可以添加文件了编写verilog代码了。 这里补充一点自动补全快捷键按 ctrl enter
此处定义一个1秒钟变化一次的led小灯
timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 12:30:05 05/12/2019
// Design Name:
// Module Name: ISE_led_top
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module ISE_LED(
input sysclk,
input rst,
output led);reg [28:0] time_cnt;
reg led_reg;always (posedge sysclk or negedge rst)beginif(!rst)time_cnt0;else if (time_cntd50000000)time_cnt0;elsetime_cnttime_cnt1b1;endalways (posedge sysclk or negedge rst)beginif(!rst)led_reg0;else if(time_cntd50000000)led_reg~led_reg;elseled_regled_reg;end
assign ledled_reg;
endmodule
点击XST可以进行综合分析从而判断代码是否出错。 有错是正常的没有一个人敢保证不用编译器检查第一遍写代码就完全正确。 XST编译成功后的界面。
3、时序约束 在上图中我们用Creat Timing Contraints来创建时序约束。 另外在ISE中时序约束文件被称之为UCF。其实就是user contraints file的简称。 一般来说对于一些简单的工程我们仅仅需要约束时钟就可以了。 这里我要说明一下ISE对代码的检测还是比较严格的如果我输出端口没有被赋值都会报错只要有错误那么时序约束界面就可能不会给出clock domains这个选项。 在图中第一栏TIMESPECTiming Specificaition,时钟说明名称为TS_sysclk,表示创建一个时钟约束标识符“TS_sysclk”;第二栏“Clock net name”(时钟管脚名自动设为“sysclk”第三栏指定“TIME”时钟周期为20ns“initial clockedge”(最初的时钟沿)为上升沿“rising duty cycle”(上升沿的占空比为50%)设置完后点击[ok]即可。 这里要说明下其实TS_sysclk就是和timequest一样只是一个名字而已实际上重要的是关联的目标sysclk。
4、分配管脚
1、手动分配管脚 如果打不开报错的话而且已经解决过了wein10的兼容性问题那么可以清楚工程文件
此时我们可以看到ucf文件中已经增加了对管脚的约束。
2、使用ucf文件分配管脚 可以导出来管脚信息
5、配置工程
在工程中我们需要将没有使用的管脚配置为浮空状态。在编译流程窗口下找到【generate programming file】并右键点击【process properities…】 我们将没有使用的管脚配置为浮空状态。
6、下载程序
注意如果你的管脚分配不恰当就会导致实现implement不通过
点击generate programming file就可以对整个工程进行全编译。 连接下载器 双击boundary scan 点击initial chain,这个时候软件会自动识别。 此时又会弹出一个窗口问我们是否要添加一个额外的PROMs由于我们进行在线下载的所以我们不需要。也就是说我们并没有采取固化操作。 点击OK即可
然后在弹出来的窗口中点击yes选择生成后的bit文件。 在初始化完毕后点击操作中的program即可下载程序 此时小灯就能开始闪烁啦
3、win10与ISE的bug解决方案
https://blog.csdn.net/feq123/article/details/80900389
4、固化程序
前面的2已经把基本流程讲解完毕现在再做一些补充关于如何固化程序这一点从这么一个背景说起最近两天想叫外协写的程序发过来我们自己烧写别人当然不会给源代码于是给了我们一个叫什么m啥的文件当然别人也不会给bit文件bit文件貌似不能固化。 由于我们下载的bit文件所以开发板掉电会丢失 如果我们想要不丢失我们就必须利用jtag接口下载MCS文件到FLASH中就可以实现程序掉电不丢失。 我们可以在上图的位置点击也可以在iMACT中点击。 创建PROM文件 选择要转换的bit文件后然后选择no代表只添加一个bit文件。 点击generate生成mcs文件 生成mcs文件后返回下载页面双击蓝色虚线框的SPI选择mcs文件 先把flash给擦除然后再烧写程序进进去。 然后双击program即可。
总之一句话就是要先将bit文件转换成mcs文件然后通过flash的SPI配置烧写到flash中即可。
5、ISE搭配Modelsim软件的使用
1、关联modelsim路径
在ISE中调用Modelsim就像alteral一样只要我们设置好了路径我们就可以直接调用modelsim至于如何脱离了ISE平台采用do文件仿真在后面有时间我会专门写一篇针对这三大工具平台独立的进行仿真。
2、添加TB文件 表示待仿真的文件是ISE_LED,与之关联的文件是ISE_LED. 此时我们可以看到TB文件已经有了不少例化被测试的模块了。 现在我们要做的就是写激励就行了。
timescale 1ns / 1ns// Company:
// Engineer:
//
// Create Date: 20:02:51 05/12/2019
// Design Name: ISE_LED
// Module Name: D:/ISE_FPGA_Project/liruifeng_tem/ISE_learning/ISE_LED/ISE_LED/ISE_LED_tb.v
// Project Name: ISE_LED
// Target Device:
// Tool versions:
// Description:
//
// Verilog Test Fixture created by ISE for module: ISE_LED
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// module ISE_LED_tb;// Inputsreg sysclk;reg rst;// Outputswire led;// Instantiate the Unit Under Test (UUT)ISE_LED uut (.sysclk(sysclk), .rst(rst), .led(led));initial begin// Initialize Inputssysclk 0;rst 0;// Wait 100 ns for global reset to finish#100 rst1;forever begin#20 sysclk~sysclk;end// Add stimulus hereendendmodule
3、编译仿真库实现功能仿真
编写完了仿真文件接着我们需要编译仿真库。 就可以启动modelsim了这里指的注意的是我们修改了verilog程序代码和仿真文件代码前提是不修改端口信号我们不需要重新编译工程我们只要关闭modelsim仿真软件再一次点击开始仿真即可。如果我么你修改了端口的输入和输出那么这里最好重新全编译一次并且我们需要重新生成仿真模板文件进行修改。至此我们就完成了功能仿真。 以25M时钟源可以看到每隔2S钟输出变化一次符合预期标准。 补充其实我试了下直接点击仿真行为仿真即可 上图是把始终晶振更改为50M后直接点击行为仿真。
4、门级仿真
至于门级仿真就是布线后的仿真,综合后进行ISE的实现操作implement包括转换、映射、布局布线。在这三个过程中每一个过程都会生成一个仿真模型由于翻译和映射不会产生延时因此常用布局布线后产生的仿真模型进行时序仿真。 在实现过后点击【Generate Post PlaceRoute Simulation Model】开始建立时序布局布线后的仿真模型。 如上图所示选择布线后模型
6、ISE无法编译XILINX库文件的解决办法
今天我在学习vivado的时候也需要配置modelsim的路径于是我打开ISE本来想查看一下。结果发现之前都好好的编译XILINX库居然报错通不过了。明明路径都已经给出了但是却编译不通过错误。 其实我们只需要在执行文件后面加一个\即可这个和quartus的modelsim有时候也出现这种情况是一样的。 6、使用ISE自带的内嵌仿真器ISim
这里我为什么要单独说一下ISim的使用流程就是因为ISim这个东西和VIVADO自带的仿真器也非常相似不知道是不是因为一个公司开发的那批人就在源代码上面改了改的原因。至于quartus的自带仿真器件的仿真非常的low一半我们都不用。所以关于quartus的自带仿真就不介绍了。 如上图所示将仿真工具选为ISim 可以仿真时间 下面我们用后仿真试试看。
这里我就不给出仿真波形了因为我试了1s仿真时间太长了。
至此ISE基本使用流程讲解完毕