ISE

详解FPGA上电配置过程时序图

ぐ巨炮叔叔 提交于 2020-03-26 11:15:52
3 月,跳不动了?>>> 如前所述,FPGA是由存放在片内的RAM来设置其工作状态的,因此工作时需要对片内RAM进行编程。用户可根据不同的配置模式,采用不同的编程方式。Xilinx FPGA的常用配置模式有主串模式、从串模式、Select MAP模式等。 FPGA和CPLD不同,上电后不能直接工作,而是需要一个配置过程。Xilinx FPGA需要经过8个步骤才能正常地运行用户逻辑,整个流程如图1-8所示。 图1-8 FPGA上电配置步骤 1.FPGA上电启动 FPGA工作的第一步就是给器件加电。Xilinx要求VCCINT(核心电压)先动,然后再是VCCO(I/O电压),最坏情况是它们之间不能相差1 s以上。在并行配置模式下,要求VCCO_2参考电压必须和FLASH参考电压相同。 在系统正常上电或者PROG-B是一个低脉冲时,FPGA开始配置寄存器空间。这段时间除定义好的配置引脚外,其他I/O引脚均被设置为高阻态(High-Z)。经多次测试,这个阶段需要30 ms左右的时间。 FPGA启动阶段最后一步就是配置启动模式。在PROG-B变高时,FPGA开始采集配置方式引脚(M3、M2、M1),并同时驱动CCLK输出。在这个阶段,有两种方法可以延迟FPGA的配置时序,一种是拉低INIT-B引脚,这是由于FPGA检测到自身还没有初始化完毕,不会进行接下来的操作步骤

FPGA基本开发设计流程,九个步骤搞定

元气小坏坏 提交于 2020-03-25 12:15:03
3 月,跳不动了?>>> FPGA的设计流程就是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程。FPGA的开发流程一般如图1-10所示,包括电路功能设计、设计输入、功能仿真、综合优化、综合后仿真、实现、布线后仿真、板级仿真以及芯片编程与调试等主要步骤。 图1-10 FPGA开发的一般流程 1.电路功能设计 在系统设计之前,首先要进行的是方案论证、系统设计和FPGA芯片选择等准备工作。系统工程师根据任务要求,如系统的指标和复杂度,对工作速度和芯片本身的各种资源、成本等方面进行权衡,选择合理的设计方案和合适的器件类型。一般都采用自顶向下的设计方法,把系统分成若干个基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接使用EDA元件库为止。 2.设计输入 设计输入是将所设计的系统或电路以开发软件要求的某种形式表示出来,并输入给EDA工具的过程。常用的方法为硬件描述语言(HDL)和原理图输入方法等。原理图输入方式是一种最直接的描述方式,在可编程芯片发展的早期应用比较广泛,它将所需的器件从元件库中调出来,画成原理图。这种方法虽然直观且易于仿真,但效率很低,不易维护,不利于模块构造和重用。其更主要的缺点是可移植性差,当芯片升级后,所有的原理图都需要做一定的改动。目前,在实际开发中应用最广的就是HDL语言输入法,利用文本描述设计

确定当前PowerShell脚本位置的最佳方法是什么?

核能气质少年 提交于 2020-02-28 04:52:21
每当需要引用公共模块或脚本时,我都喜欢使用相对于当前脚本文件的路径。 这样,我的脚本始终可以在库中找到其他脚本。 那么,确定当前脚本目录的最佳标准方法是什么? 目前,我正在做: $MyDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition) 我知道在模块(.psm1)中,您可以使用 $PSScriptRoot 获取此信息,但是在常规脚本(即.ps1文件)中并没有设置此信息。 获取当前PowerShell脚本文件位置的规范方法是什么? #1楼 如果其他任何方法失败,您也可以考虑使用 split-path -parent $psISE.CurrentFile.Fullpath 。 特别是,如果您运行文件以加载一堆函数,然后在ISE Shell中使用-来执行这些函数(或者如果您运行选择),则上述的 Get-Script-Directory 函数似乎不起作用。 #2楼 对于PowerShell 3.0 $PSCommandPath Contains the full path and file name of the script that is being run. This variable is valid in all scripts. 该函数是: function Get

如何输入多行命令

我的未来我决定 提交于 2020-02-26 14:43:50
是否可以将PowerShell命令行拆分为多行? 在Visual Basic中,我可以使用下划线( _ )继续下一行中的命令。 #1楼 我发现后面的勾号和换行符之间一定不能有 任何 字符。 即使是空格也会导致命令不起作用。 #2楼 我假设您正在谈论命令行 - 如果它在脚本中,那么新行充当命令分隔符。 在命令行中,使用分号“;” #3楼 您可以使用空格,然后使用重音(反引号): Get-ChildItem -Recurse ` -Filter *.jpg ` | Select LastWriteTime 但是,在上述情况下,这只是必要的。 通常,当命令在该点语法上无法完成时,您将获得自动行继续。 这包括启动一个新的管道元素: Get-ChildItem | Select Name,Length 因为 | 之后会没有问题 命令无法完成,因为它缺少另一个管道元素。 同时打开花括号或任何其他类型的括号将允许直接继续行: $x=1..5 $x[ 0,3 ] | % { "Number: $_" } 类似于 | 逗号在某些情况下也会起作用: 1, 2 请记住,虽然,类似于JavaScript的 自动分号插入 ,也有一些事情,也同样打破,因为线路中断发生在它 是 由一个有效的声明之前的一个点: return 5 不管用。 最后,字符串(各种类型)也可能超出一行: 'Foo bar'

ISE14.7 uart中加入了chipscope之后发送变快了

巧了我就是萌 提交于 2019-12-05 01:51:35
实验环境:ise14.7 spartan6 tqg144 win7/64位 今天做实验: uart每2秒左右发一次数据给PC,在没有引入chipscope之前一切都正常,为了查看信号,加入了chipscope,但是PC上并不是每2秒左右收到一次数据,而是非常之快地收到了数据,原因不明白???? 来源: https://my.oschina.net/u/2963604/blog/3131589

xilinx FIFO的使用及各信号的讨论

落花浮王杯 提交于 2019-11-29 07:24:37
FIFO的使用非常广泛,一般用于不同时钟域之间的数据传输,比如FIFO的一端是AD数据采集,另一端是计算机的PCI总线,假设其AD采集的速率为16位100K SPS,那么每秒的数据量为100K×16bit=1.6Mbps,而PCI总线的速度为33MHz,总线宽度32bit,其最大传输速率为33*32=1056Mbps,在两个不同的时钟域间就可以采用FIFO来作为数据缓冲。另外对于不同宽度的数据接口也可以用FIFO,例如单片机位8位数据输出,而DSP可能是16位数据输入,在单片机与DSP连接时就可以使用FIFO来达到数据匹配的目的。 本文就讲通过ISE软件生成一个FIFO,并对其进行一些操作以求更加了解FIFO中各个信号的作用以及控制方法(有些简单步骤将省略不提)。 在这步中,由于现在做的不是soc工程,选择Native. Next后,需选择时钟和存储器类型。1,时钟,由FIFO的作用可知大部分都是读写不同步的,这里我们也选择异步模式,即读写的时钟不同。2,存储器类型,这里主要是block RAM和distribute RAM之间的区别。简而言之,block RAM是FPGA中定制的ram资源,而distribute RAM则是由LUT构成的RAM资源。由此区别表明,当FIFO较大时应选择block RAM,当FIFO较小时,选择distribute RAM