文章目录

  • 背景
  • 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_cnt<=0;else if (time_cnt=='d50000000)time_cnt<=0;elsetime_cnt<=time_cnt+1'b1;endalways @ (posedge sysclk or negedge rst)beginif(!rst)led_reg<=0;else if(time_cnt=='d50000000)led_reg<=~led_reg;elseled_reg<=led_reg;end
assign led=led_reg;
endmodule

点击XST可以进行综合分析,从而判断代码是否出错。
有错是正常的,没有一个人敢保证不用编译器检查,第一遍写代码就完全正确。

XST编译成功后的界面。

3、时序约束


在上图中,我们用Creat Timing Contraints来创建时序约束。
另外在ISE中,时序约束文件,被称之为UCF。其实就是user contraints file的简称。
一般来说,对于一些简单的工程,我们仅仅需要约束时钟就可以了。

这里,我要说明一下,ISE对代码的检测还是比较严格的,如果我输出端口没有被赋值,都会报错,只要有错误,那么时序约束界面就可能不会给出clock domains这个选项。


在图中,第一栏TIMESPEC(Timing 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 rst=1;forever begin#20 sysclk=~sysclk;end// Add stimulus hereendendmodule

3、编译仿真库实现功能仿真

编写完了仿真文件,接着,我们需要编译仿真库。



就可以启动modelsim了,这里指的注意的是:我们修改了verilog程序代码和仿真文件代码(前提是不修改端口信号),我们不需要重新编译工程,我们只要关闭modelsim仿真软件,再一次点击开始仿真即可。如果我么你修改了端口的输入和输出,那么这里最好重新全编译一次,并且我们需要重新生成仿真模板文件进行修改。至此,我们就完成了功能仿真。
以25M时钟源,可以看到每隔2S钟,输出变化一次,符合预期标准。

补充:其实,我试了下,直接点击仿真行为仿真即可

上图是把始终晶振更改为50M后,直接点击行为仿真。

4、门级仿真

至于门级仿真就是布线后的仿真,综合后,进行ISE的实现操作(implement),包括转换、映射、布局布线。在这三个过程中每一个过程都会生成一个仿真模型,由于翻译和映射不会产生延时,因此常用布局布线后产生的仿真模型进行时序仿真。

在实现过后,点击【Generate Post Place&Route Simulation Model】开始建立时序布局布线后的仿真模型。

如上图所示,选择布线后模型

6、ISE无法编译XILINX库文件的解决办法

今天,我在学习vivado的时候,也需要配置modelsim的路径,于是我打开ISE,本来想查看一下。结果发现之前都好好的,编译XILINX库,居然报错,通不过了。明明路径都已经给出了,但是却编译不通过错误。
其实我们只需要在执行文件后面加一个\即可,这个和quartus的modelsim有时候也出现这种情况是一样的。


6、使用ISE自带的内嵌仿真器ISim

这里,我为什么要单独说一下ISim的使用流程,就是因为ISim,这个东西和VIVADO自带的仿真器也非常相似,不知道是不是因为一个公司开发的,那批人就在源代码上面改了改的原因。至于quartus的自带仿真器件的仿真,非常的low,一半我们都不用。所以关于quartus的自带仿真就不介绍了。

如上图所示,将仿真工具选为ISim
可以仿真时间



下面,我们用后仿真试试看。

这里,我就不给出仿真波形了,因为我试了,1s仿真时间太长了。

至此,ISE基本使用流程讲解完毕

ISE_软件基本使用流程(win10 的bug工程约束仿真烧写mcs固化)相关推荐

  1. 小型软件项目开发流程探讨

    一.导言   国内很多项目都是小型项目, 参与人员少(两到五个人), 要快速交付(一两个月) . 要成功完成这种项目, 除了使用成熟且被团队成员熟练使用的技术之外, 有一个良好的开发流程, 也是很必要 ...

  2. JAVA软件项目研发流程

    JAVA软件项目研发流程 -- 谈需求(客户提需求,有客户项目经理,技术经理) -- 可行性分析报告(市场调研)[接项目]{人员配比,项目成本}(竞标) -- 概要设计 -- 静态模型(建模工具)[产 ...

  3. Creo 5.0软件安装教程|兼容WIN10

    Creo 5.0软件安装教程|兼容WIN10 软件简介: Creo5.0最新版本的Creo 3D建模软件,也是目前广受赞誉的2D和3D CAD软件,包含了Pro/ENGINEER.CoCreate和P ...

  4. 软件开发主要流程步骤

    软件开发主要流程步骤 1.需求采集 主要就是采集顾客要求,她们需要这款软件实现的什么功能. 2.需求分析 整合顾客需求,将需要归类内容归类并整理,大脑有思路. 3.原型开发 原型开发的软件网站有很多, ...

  5. SW2019SP0软件安装教程|兼容WIN10

    SW2019SP0软件安装教程|兼容WIN10 软件简介: SolidWorks是一款功能强大的三维CAD/CAE辅助设计软件,它为用户提供一套无缝集成的软件工具,使用户能够更快完成从概念到产品制造流 ...

  6. APP软件开发详细流程如何?

    在互联网技术发达的今天,APP已经深入到我们生活的方方面面了,从购物.家政.洗车.教育到美容.旅游.餐饮等等,都可以通过各种各样的APP软件来实现,使我们的生活更加便捷化.智能化.不过,很多感兴趣的朋 ...

  7. Linux下软件安装 非root用户安装软件的一般流程

    Linux下的软件安装 Linux下的软件安装,实质上有如下四种,"正规"程度依次递减: 使用标准的yum/apt/yast包管理程序安装 比如:sudo apt-get inst ...

  8. 软件的开发流程及计算机硬件组成

    标题 软件的开发流程及计算机硬件组成 软件的开发流程 一.需求分析阶段 1.首先由PM产品经理调研市场,提交给产品部门,如有市场需求则通过审核 2.召集项目相关人员UE.RI.RD.QA.开需求讨论会 ...

  9. 开发一个软件的主要流程

    本文重点解决如下问题:开发一个软件的主要流程是什么?了解开发一个软件的主要流程对于编程者而言非常重要,它能够让编程者对如何开发一个软件有个整体的认知.开发一个软件的主要流程包括:1)软件前端界面设计: ...

最新文章

  1. 在Foreda8上安装libaio-0.3.105-2.i386.rpm
  2. mysql的告警日志_MySQL Aborted connection告警日志的分析
  3. mysql count count id_mysql 为什么count(*)快于count(id)
  4. python把文件读成字节流_Python中struct模块对字节流/二进制流的操作教程
  5. Python核心编程第二版 第七章课后练习 7-6. 列表和字典
  6. 新加坡百吉生物获5亿元投资;武田中国总部/亚洲开发中心落户上海浦东 | 医药健闻...
  7. Windows平台搭建Mantis服务器
  8. 启动gazebo失败报错[gazebo-1] process has died [pid 10999, exit code 255
  9. 5个酷毙的 Python 神器工具
  10. WIndow10下安装UR机器人接口ur_rtde
  11. DevEco IDE 华为全系列远程真机免费调测
  12. 新旧iPhone齐发力,苹果成最大赢家,中国手机靠小米挽回颜面
  13. Rancher2.6全新Monitoring快速入门
  14. 转来的,激励激励自己
  15. 机器学习之依概率收敛与一致估计(相合估计)
  16. Z:如何轻松做好网站外链的十大技巧
  17. uni-app常见问题以及解决方案
  18. CDH spark启动spark-shell报错:Permission denied: user=root, access=WRITE, inode=/user
  19. 广东2021年各地区高新技术企业申报时间统计
  20. 神经网络中的权值共享

热门文章

  1. MySQL的简单使用-(一)
  2. 提高Web性能的前端优化技巧总结
  3. [排错]运行cocos2d自带的cocos2d-test-ios工程出现错误:找不到libcocos2d.a
  4. windows下 apache 二级域名相关配置
  5. powerDesiger uml class
  6. 黄忠---忠心不二主
  7. UA OPTI501 电磁波8 麦克斯韦方程边界条件的推导
  8. UA MATH571B 试验设计VI 随机效应与混合效应1
  9. SQL Server 事务日志
  10. osgearth入门图解-用VC++做一个地球出来