管脚文件|FPGA锁定管脚的tcl文件怎么用

1. 请教一个FPGA的问题,在用QUARTUS软件的时候,运行脚本文件,管脚总是不显示。编译后才显示,有没有什么解

呵呵,大致明白你的问题了,你是想在“编译前”定义管脚,对于QUARTUS你必须要先编译,注意区别于综合。你说得编译应该是综合。

2. Verilog通过文件去定义管脚

FPGA管脚分配文件保存方法

使用别人的工程时,有时找不到他的管脚文件,但可以把他已经绑定好的管脚保存下来,输出到文件里。

方法一:

查看引脚绑定情况,quartus -> assignment -> Pins,打开FPGA引脚界面,在这个界面的菜单中可以保存引脚文件为csv格式(表格形式)和tcl格式。

步骤:File -> Export… ->选择保存名字和保存格式。

方法二:

直接输出管脚配置,assignmengt -> Export assignmengt,可以保存配置为qsf格式,该格式可以用记事本查看,在该文件中同样包含了引脚信息。注意:保存时会在原工程文件夹下新建一个文件夹。

至于元件的其它配置方式,可以在qsf文件和tcl文件中用语句来设置,也可以在Assignment -> device,界面中设置。

加载:

使用已经有的引脚文件时,在选项assignment -> Import assignment,中可以选择要加载的引脚文件。此时,可以加载qsf和csv(或txt)文件。

保存的csv(txt)文件、qsf文件和tcl文件的区别:

csv(txt)文件:包含芯片所有管脚信息,包括分配的和未分配的;

qsf文件:包含管脚分配信息和芯片信息;

tcl文件:只包含已分配管脚信息。

最后总结最重要的一点,就是没有使用的IO一定要进行状态的定义:

Assignment >> Device >>选择Device and pins options >> unusedpin >>设置为Tri-stated(软件设置有很多种可以选择),再次重新编译和下载,其他没有用到的IO就不会出现其他不可预料的状况了(我之前没设置就导致使用开发板时,明明没定义的数码管IO却把所有的都点亮了>=<)。

宏定义`define

用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为:

`define标识符(宏名)字符串(宏内容)

如:`define signal string

它的作用是指定用标识符signal来代替string这个字符串,在编译预处理时,把程序中在该命令以后所有的signal都替换成string。这种方法使用户能以一个简单的名字代替一个长的字符串,也可以用一个有含义的名字来代替没有含义的数字和符号,因此把这个标识符(名字)称为“宏名”,在编译预处理时将宏名替换成字符串的过程称为“宏展开”。`define是宏定义命令。

[例1]:`defineWORDSIZE 8

mole

reg[1:`WORDSIZE]data;//这相当于定义reg[1:8] data;

关于宏定义的八点说明:

1)宏名可以用大写字母表示,也可以用小写字母表示。建议使用大写字母,以与变量名相区别。

2)`define命令可以出现在模块定义里面,也可以出现在模块定义外面。宏名的有效范围为定义命令之后到原文件结束。通常,`define命令写在模块定义的外面,作为程序的一部分,在此程序内有效。

3)在引用已定义的宏名时,必须在宏名的前面加上符号“`”,表示该名字是一个经过宏定义的名字。

4)使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量。而且记住一个宏名要比记住一个无规律的字符串容易,这样在读程序时能立即知道它的含义,当需要改变某一个变量时,可以只改变`define命令行,一改全改。如例1中,先定义WORDSIZE代表常量8,这时寄存器data是一个8位的寄存器。如果需要改变寄存器的大小,只需把该命令行改为:`defineWORDSIZE 16。这样寄存器data则变为一个16位的寄存器。由此可见使用宏定义,可以提高程序的可移植性和可读性。

5)宏定义是用宏名代替一个字符串,也就是作简单的置换,不作语法检查。预处理时照样代入,不管含义是否正确。只有在编译已被宏展开后的源程序时才报错。

6)宏定义不是Verilog HDL语句,不必在行末加分号。如果加了分号会连分号一起进行置换。如:

[例2]:moletest;

rega, b, c, d, e, out;

`defineexpressiona+b+c+d;

assign out = `expression + e;

endmole

经过宏展开以后,该语句为:

assignout = a+b+c+d;+e;

显然出现语法错误。

7)在进行宏定义时,可以引用已定义的宏名,可以层层置换。如:

[例3]:mole test;

rega, b, c;

wire out;

`define aa a + b

`define cc c + `aa

assign out = `cc;

endmole

这样经过宏展开以后,assign语句为

assignout = c + a + b;

8)宏名和宏内容必须在同一行中进行声明。如果在宏内容中包含有注释行,注释行不会作为被置换的内容。如:

[例4]: mole

`define typ_nand nand #5//define a nand with typical delay

`typ_nand g121(q21,n10,n11);

………

endmole

经过宏展开以后,该语句为:

nand #5 g121(q21,n10,n11);

宏内容可以是空格,在这种情况下,宏内容被定义为空的。当引用这个宏名时,不会有内容被置换。

注意:组成宏内容的字符串不能够被以下的语句记号分隔开的。

注释行

数字

字符串

确认符

关键词

双目和三目字符运算符

如下面的宏定义声明和引用是非法的。

`definefirst_half"start of string

$display(`first_half end of string");

注意在使用宏定义时要注意以下情况:

1)对于某些EDA软件,在编写源程序时,如使用和预处理命令名相同的宏名会发生冲突,因此建议不要使用和预处理命令名相同的宏名。

2)宏名可以是普通的标识符(变量名)。例如signal_name和'signal_name的意义是不同的。但是这样容易引起混淆,建议不要这样使用。

3. multisim管脚模型文件在哪个文件夹

想找管脚模型文件就要打开LM386sym文件。

4. FPGA锁定管脚的tcl文件怎么用

就像划电路图一样对引脚进行编辑就搞定啊,如果是开发版它会有一部分引脚不可用的,因为已经被占用了 。tcl这个老牌子还是不错的。

5. innovus怎么导出管脚到gds

innovus怎么导出管脚到gds,从Innovus stream out导出合并GDS

有了正确的streamOut.map文件后,就可以生成GDS了。Innovus里只对金属,VIA层进行操作,并不修改标准元内部。默认导出的GDS只有金属,VIA层。很多时候,顶层版图希望看到一个合并了标准元版图的完整的GDS。这时,streamOut命令就要加上标准元GDS文件,通常在标准元库里可以找到。

6. 如何向一个quartus2工程添加已有的引脚设定文件就是把别的工程的引脚设定文件加进来

在QII里面在ASSIGNMENT中间有一个IMPORT选择项,用那个可以导入已有的管脚文件。或者您打开当前工程的QSF文件,把原有的QSF文件也打开,然后复制粘贴也可以。这二种做法的前提是您这二个设计的器件型号是一样的。

7. fpga管脚分配文件tcl分配不上管脚是怎么回事

建议可以先产生tcl文件再去改里面的东西,防止出问题

8. fpga中必须绑定所有顶层管脚以后才能生成bit文件吗

FPGA的管脚名没有叫LINE OUT的。 关于你的用途,我先谈谈我的看法。 FPGA主要处理的是数字信号,如果FPGA内部没有集成特定的模块比如(数字/模拟转换模块),那FPGA的管脚(不管是输入还是输出)接的都应是数字信号。


赞 (0)