最近在使用CycloneII的開發板,但是高版本的Quartus不支持II系列的開發,於是只能用Q11了。好久沒玩FPGA了,新建工程的過程中遇到了一些問題,這里把這些問題記下了以便以后查看。
Quartus11.0新建工程項目
1 建立一個空項目
- 依次點擊File->New Project Wizard這是采用向導的方式建立一個新的工程項目。當然也可以直接使用File->New,在菜單中選擇New QuartusII Project來新建一個項目。采用向導的方式建立項目會一步步引導選擇文件夾和芯片等,因此這里建議使用向導的方式建立項目。
- 在點擊下一步之后,會出現設置文件夾和項目名稱和頂級實體名稱的設置界面。這里建議將工程項目名默認和頂層實體名相同。工程的頂層實體名稱必須要和設計中的相同不然會報錯。
- 下一步選擇已有的文件添加到當前工程中,如果沒有則直接下一步就行。
- 選擇器件,在選擇器件的界面提供了很多的篩選器,比如芯片系列(Device family),封裝(Package),引腳數(Pin count)和速度等級(Speed grade).當然也可以不適用篩選器,在已安裝中的器件中選擇。建議在安裝Quartus的時候只安裝自己需要使用的器件。
- 選擇EDA設計工具,如仿真(simulation),時序分析(Timing Analysis)等。一般我們使用獨立的ModelSim進行仿真,這里也直接跳過。
- 最后一般進行確認,如果覺得有問題可以選擇上一步(Back)進行調整,如果沒有問題直接點擊完成(Finish)。
2 新建一個verilog文件並編寫輸入輸出信號
- 選擇文件(File)->新建(New),或者使用快捷鍵(Ctrl+N).選擇Verilog HDL File.新建的Verilog文件中的實體(Entity)必須要和在向導中設置的一致否則會報錯。默認頂層實體(Top-level entity)和項目名稱一致。如果自己修改了而又忘了,可以在Assigments->Settings中General選項卡中查看。
- 定義實體的輸入輸出如下:
module FpgaProA(
// input
input YULIU , //開關檢測,0 -> 整流開關合上
input Q2_ON , //逆變開關輸入信號,0 -> 逆變器工作
input BP_ON , //0 -> 需要轉旁路
input WG1 , //0 -> 溫度過高
input CLK0 , //CLK0
input CLK4 , //CLK4
input [6:1] PWM , //PWM輸入
input [3:0] XA , //XA地址總線
input XZCS7n , //DSP片選
...
);
endmodule
需要注意的是,上面是一種推薦的定義輸入輸出信號的方法。在以前定義輸入輸出信號還有另外一種形式如下:
module cpld_QQ2812(DSP_Add,DSP_Data,WR,RD,CS1,BUZZER,Key,LED,E,RS,LCD_Data,
PA0,PA1,SLOE,PATEND,SLCS,IFCLK,CLKOUT,SLRD,SLWR,FIFO_PROG,FIFO_FULL,FIFO_EMPTY,
SPI_CS,ACICS,SIDIN,SICLK,IN,OUT,INT1,NMI,EXINT,NMI1,NMI2,TXB,TXB1,RXB,CANRX,CANTX,CANRX_1,CANTX_1);
/*CPLD輸入信號的定義*/
input [5:0] DSP_Add; //DSP對CPLD的地址定義
input WR,RD,CS1; //讀寫和CPLD片選定義
input [7:0] Key; //8個按鍵定義
input PA0,PA1;
input IFCLK,CLKOUT,FIFO_PROG,FIFO_FULL,FIFO_EMPTY; //USB控制信號定義
input [15:0] IN; //外擴16個IO輸入定義
input [4:0] EXINT; //5個外中斷定義
...
endmodule
上面這種定義輸入輸出信號的形式並不推薦,建議使用第一種將信號定義和輸入輸出類型放在一起的方式。
另外一個需要注意的是,在Quartus11中文件的編碼格式為ANSI且不可選,而在高版本的Quartus中編碼格式為UTF-8無BOM.因此往往在Quartus11中的中文注釋在用其他的文件編輯器中打開往往亂碼。這里建議使用Notepad++編寫.v文件,因為Notepad++中文件的格式是可選的。如果你已經用Quartus11修改了文件並保存了,可以用Notepad++打開.v文件,改成對應的編碼格式即可。
3 分配引腳
在分配引腳之前,首先編譯一下程序。此時選擇Assigments -> Pin Planner打開引腳配置界面。如果之前沒有編譯過程序,下面不會出現定義引腳的相關信息。
根據硬件設計將相應的引腳進行配置。
如果你之前已經有相似的工程了,也可以直接使用Assigments -> Import Assigments導入已有的引腳文件。如果項目中需要分配的引腳數較多,建議采用這種方式分配引腳。下面具體介紹幾種引腳分配方法。
當然也可以直接使用文本編輯器編輯已有的.pin文件。
3.1.txt文件導入
首先編輯一個.txt文件,格式如下所示:
To,Location
//input
YULIU, PIN_112
Q2_ON, PIN_113
BP_ON, PIN_114
...
然后是由Assigments -> Import Assigments,導入引腳即可。 這種方法簡單暴力,強烈推薦。
3.2導入.tcl文件
.tcl文件可以自己用文本編輯器寫,也可以首先使用quartus生成一個空白的.tcl文件,然后根據生成的格式編輯,最后在使用上面的方法導入.tcl文件即可。生成空白的.tcl文件方法如下:Assigments -> Pin Planner -> File -> Expert.然后選擇文件的格式為.tcl格式即可。
package require ::quartus::project
# 注釋
set_location_assignment PIN_112 -to YULIU
set_location_assignment PIN_113 -to Q2_ON
set_location_assignment PIN_114 -to BP_ON
需要注意的是.tcl文件的注釋以#開頭。然后根據上面的格式繼續輸入需要編輯的引腳,最后在使用上面的方法導入即可。
3.3導入.csv文件
.csv的文件導入和.tcl文件的導入一樣,只是生成空的模板時選擇,文件的后綴為.csv即可。這種方法最不推薦。
4 總結及其他注意事項
上面三個步驟完成之后,基本已經建立好模塊的框架了,只需添加代碼即可。此時編譯會出現許多的警告,這些警告大部分都不用理會。如果有興趣可以在網上進行相應的搜索來解決。這里就不進行相應的介紹了。