【再说FPGA】近期小问题、小经验总结

来源:本站
导读:目前正在解读《【再说FPGA】近期小问题、小经验总结》的相关信息,《【再说FPGA】近期小问题、小经验总结》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《【再说FPGA】近期小问题、小经验总结》的详细说明。
简介:主题:近期在使用14.2版本的ISE、XPS时遇到的一些小问题及相应的解决方法。

几个问题:

Q1:ISE设计HDL完毕并导入至XPS作为IP核之后,再在XPS中打开并修改HDL代码后,XPS不会自动检测相应的改动,无法更新BitStream。

A1:XPS不会自动检测改动,那么就手动来吧,具体操作如下:

菜单栏依次选择 Hardware –> Clean Hardware,清除XPS生成的过程文件之后,再选择Generate BitStream重新生成BitStream就可以了。

Q2:在SDK中编写的程序使用到一些数学函数,如round()、pow(),编译时出现 undefined reference ‘round’(pow) 错误。

分析:在使用到round()函数的文件中已经包含了math.h文件,但没有作用,估计是编译或者链接过程出现了问题。

A2:查看makefile相关文件,修改gcc链接参数,添加 –lm 指令。

PS:-l + x 指令用于指定 x库,-lm是链接数学库的意思。

小经验:

1、使用Xilinx的仿真软件ISim时,当ISim打开的情况下,在ISE再次运行“Simulate Behavioral Model”,有可能出现错误。可以关闭ISim,运行“Behavioral Check Syntax”之后,再运行“Simulate Behavioral Model”,应该就不会出问题了。

2、关于代码风格

前几天有个同事遇到一个让人头疼的问题:“手头有一份源码且注释很少,除此之外几乎没有任何资料,在配置串口时不知道如何使能校验…”

我去找他闲聊的时候,说到这个,我就大致看了一下程序,看到一个名为PAREN的符号(姑且让我这么叫吧),我就信誓旦旦的说:“这个不就是校验使能吗?”他说“你又不懂这个操作系统,我见到一份资料上说这是用来使能 停止位 的”,我也不好说什么,因为我确实不懂,不过还是劝他试一下,结果问题解决了,他直接凌乱了……

校验的英文单词是parity,后面的en我不知道是不是enable的意思,但是从命名上可以看出PAREN和校验是有关系的。

这个事得到教训如下:i)学好英语 ii)对变量、函数的命名最好具有自明性 iii)可移植性好的程序应该有良好的注释。

3、实例化底层元件时,修改相应的参数值,语法如下:

被引用模块名 # (参数1,参数2,…)例化模块名(端口列表);

举例:我设计了一个显示时序控制模块,用到了vesa标准中很多参数,如同步头像素个数,前肩像素个数等,为了方便移植,使用了参数,生成不同分辨率的时序时只需要对照vesa标准修改相关参数就可以了。

timing_sig #(

.H_RIGHT(0),

.H_FRONT(24),

.H_SYNC(136),

.H_BACK(160),

.H_LEFT(0),

.H_ACT(1024),

.H_TOTAL(1344),

.V_BOTTOM(0),

.V_FRONT(3),

.V_SYNC(6),

.V_BACK(29),

.V_TOP(0),

.V_ACT(768),

.V_TOTAL(806)

)

timing(

.iClk(clk40M),.iRst_n(Rst_n),

.oHsync(oHsync),.oVsync(oVsync),

// .oHact(oHact),.oVact(oVact),

// .oDe(oDe),.oClk(oClk),

.oX(X),.oY(Y)

);

最后记录一下调用PLL时出现的一些错误

Q3.1:综合时的错误 “ERROR:Xst:2035 - Port has illegal connections. This port is connected to an input buffer and other components. Input Buffer:

网上搜到解决方法如下:

XILINX对上述错误的解决方法是:

----------------------------------------------------------------------------------------------------------------

XST - "ERROR:Xst:2035 - Port has illegal connection. Port is connected to input buffer and following ports Port of instance with type "

问答编号#

22658

型号

XST General

最后更新日期

2007-04-11 00:00:00.0

记录状态

Active

关键词

XST, IBUF, OBUF, netlist

疑问描述

Keywords: XST, IBUF, OBUF, netlist

When attempting to instantiate a netlist, the following error occurs in XST:

"ERROR:Xst:2035 - Port has illegal connection. Port is connected to input buffer and following ports:

Port of instance with type FDCEC"

解决方案

This error will occur if the instantiated netlist contains I/O ports. There are two ways to fix this error:

1. Generate the instantiated netlist without I/O ports.

2. Instruct XST not to add I/O Buffers.

Please refer to the XST User Guide on how to disable the automatic I/O Buffer insertion.

---------------------------分割线----------------------------------------------------------------------------

于是我找到XST User Guide文档,按照文档所说的禁掉自动I/O Buffer insertion 功能。具体做法

选中synthesize,然后process->properties->Xilinx Specific Options,把add I/O buffer 的勾去掉。

去掉勾后,synthesize通过。

综合错误是解决了,但是实现时(Implement)出现新的错误:

Q3.2:ERROR:NgdBuild:924 - input pad net 'clk' is driving non-buffer primitives

出现上述错误的原因:

字面意思是说输入信号clk未经buffer就用来驱动其他primitives了,这个primitives估计指的是我们用做输出的pad。字面意思不难理解,可是怎么修改呢。

在我们的这个例子中,clk有两个load,一个是直接到输出端的test pin,另一个是到内部PLL作为源时钟来产生系统内部时钟。连接PLL时,输入信号先要连接到内部buffer以产生较强的驱动能力,从而保证时钟的时序质量。但是由于输入信号的另一分支不经过任何电路就直接连接到了输出pad,所以存在一种可能,即连接buffer的分支会被短路,从而失去预期的效果。正因为如此,ISE给出了错误警告。

理解这一点以后,解决办法就有了。比如选择CLK经过PLL后无相位差的时钟输出作为test pin,可以达到同样效果,当然会有1个clock的延迟,但是对于时钟信号,这是观察不到的。

另外,如果CLK没有驱动PLL,只有输出到test pin这一个load,那么上述的错误警告就应该不会产生了。

If multiple IBUF (and OBUF) type components are connected in series, NGDBuild reports the errors as listed above. Examples of IBUF-type components that should not be connected together include the following

即具有输入缓存(或输出缓存)的组件,不能够连接在一起。否则NGDBuild将报错。

关于这个问题我还没有理解的很透彻,感觉问题稀里糊涂的就被解决了,由于最近有点忙,所以先记录一下,以便下次碰到同样问题查阅。

提醒:《【再说FPGA】近期小问题、小经验总结》最后刷新时间 2024-03-14 01:08:47,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《【再说FPGA】近期小问题、小经验总结》该内容的真实性请自行鉴别。