【原创】FPGA (Verilog/NIOS II/Microblaze) 编程小提醒
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文件中的標號是大寫還是小寫,這個地方一定是大寫)
?
~~~~~~~~~~~~~~~(待續)~~~~~~~~~~~~~~~~~
轉載于:https://www.cnblogs.com/hclmcu/archive/2010/07/14/1777508.html
總結
以上是生活随笔為你收集整理的【原创】FPGA (Verilog/NIOS II/Microblaze) 编程小提醒的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PB_Truncate函数截取小数点引起
- 下一篇: AS3 CookBook学习整理(十七)