1、打开NIOS II IDE 建立好工程以后,先编译一下(Ctrl+B),然后打开system.h检查下目标硬件信息是否正确,
避免选择错误的目标硬件。
2、在NIOS II IDE 编写程序的时候随时保存。
3、在用SOPC builder建立软核系统时,系统的名字不能和cpu及Peripherals等的名字相同,否则Quartus编译将会出错。
4、(搭个车,写个Verilog要注意的小问题)
reg x,c,d;
reg [1:0] a;
reg [1:0] b;
reg [1:0] y;
当“=”的左边最大位宽变量的宽度为2时,“=”左边的位宽如果不为2时,系统将自动把高位去掉。
如:{x,y}={a[1:0]+b[1:0]+c}; “=”右边位宽最大的变量的位宽是2,所以“=”右边的x不管是否有值都会被编译掉。
如下面的写法则不会出现这种问题:
{x,y}={a[1:0]+b[1:0]+c,d};
5、废话再多说一遍,工程路径下不要出现中文。
6、在用Modelsim仿真,编写testbench文件的时候,当复位信号初始化为0,而你想让复位信号变成高电
平的时候,先要延迟一小段时间(即使复位信号先处于低电平一段时间),然后再把信号拉为高电平。
7、这句还是废话,不过还是要注意:不能在不同的always模块中操作同一个变量(因为always语句是并
行执行的,编译软件分不清哪一个always模块里的操作是你想要的操作)。否则会出现下面的错误:
(ISE软件中的错误提示)
(Quartus中的错误提示)
错误提示信息的内容都是:变量(在不同always模块中重复操作的变量)有多个驱动,即该变量对应有多个值,这是不允许出现的。
8、Verilog的:
当一个变量已经定义为output了,当使用assign给它赋值的时候则不用再定义wire型了,当没有定义为output型时,要用assign给它赋值的时候,刚要定义为wire型了,但是wire型的变量在always里是可以赋给reg型变量的。
9、xps软件(user_logic)的:
当出现这个错误时: line 443 unexpected token: 'end'。问题一般是在443行有条语句没有加“;”。
10、xps软件(10.1)的:
当已经添加了的ip核文件被修改以后(比如添加了外部引脚),刷新后再到ports标签下添加新的引脚,否则刚添加的引脚是不会出现在ports标签下的。
11、xps软件(10.1)的:
在sourcse标签下添加新的C文件(add new file),在写C文件的名字时,要注意把后缀名(.c)也同时写上,否则软件不会默认为C文件的。
12、ISE软件(10.1)的:
当拷贝工程到当前的工程的时候(或者是由于改变了输入输出),此时引脚需要重新分配(修改ucf文件),如果在分配引脚的时候,软件显示已经把你修改以后的引脚正确显示出来,并且你 也将其分配完毕,但是在综合的时候软件报出错误,此时的解决办法是:在你的工程目录下,搜索ucf文件,并把其都删掉,重新双击Floorplan IO—Pre—synthesis,重新生成ucf文件并正确将其分配。
13、ISE软件(10.1)的:
在顶层文件要调用其它的模块时,如果是用“include”将其它模块包含进来的话,那么在其它模块里define的内容也适用于顶层模块;否则(只是将其添加到一个工程中,并未用include将其包含进来,而是直接调用),define的内容将不适用于顶层模块。
14、nios ii 9.1的:
IOWR_ALTERA_AVALON_PIO_DATA(A,B)命令中,A处要与system中的完全相同(注意不管.bdf文件中的标号是大写还是小写,这个地方一定是大写)
~~~~~~~~~~~~~~~(待续)~~~~~~~~~~~~~~~~~