問題的提出:開發板的管腳很多是固定的,例如某個管腳連着LED或者開關,這些管腳分配是不需要修改的,那麼如何把其他工程文件的管腳分配方案導入進來呢
思路:建立一個工程需要配置的內容:
1. 器件類型(如Cyclone)
2. 器件型號(如EP1C12Q240C8)
3. 頂層實體名
4. 設計文件路徑
如果針對具體的電路板,還要設置
1. 引腳分配(往往是內容最多的一項)
2. 未使用的引腳功能(通常設爲輸入三態)
3. 引腳電平類型
4. 生成第三方編程文件類型(如.ttf文件)
5. 配置方式(主動串行或被動串行)
此外,還有針對第三方EDA工具接口的配置、編譯過程的配置等。
這些選項雖然可以在IDE界面中逐級設置,可是畢竟繁瑣費時,稍不留神就會漏掉幾項。其實,所有的IDE界面中的選項,都有其在ASCII文件中的具體語句對應。Quartus II運行時需要讀取ASCII文件而不是IDE的界面。掌握了這一規律,就可以按照Quartus II軟件的運行方式,找到對應的ASCII文件,直接對其操作來修改或複製其內容。
方法:把其他工程的qsf文件打開,經過修改,另存爲TCL文件,並且添加到當前工程下。
修改實踐:
以下是一個QSF文件:
set_global_assignment -name FAMILY "Cyclone III"
set_global_assignment -name DEVICE EP3C16F484C6
set_global_assignment -name TOP_LEVEL_ENTITY DE0_Default
set_global_assignment -name ORIGINAL_QUARTUS_VERSION "8.0 SP1"
set_global_assignment -name PROJECT_CREATION_TIME_DATE "15:56:36 MARCH 06, 2009"
set_global_assignment -name LAST_QUARTUS_VERSION 9.0
set_global_assignment -name USE_GENERATED_PHYSICAL_CONSTRAINTS OFF -section_id eda_palace
……
# Pin & Location Assignments
# ==========================
set_location_assignment PIN_A3 -to DRAM_ADDR[1]
set_location_assignment PIN_C4 -to DRAM_ADDR[0]
………
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to BUTTON[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to BUTTON[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to UART_RXD
……
CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name USE_CONFIGURATION_DEVICE ON
set_global_assignment -name CYCLONEIII_CONFIGURATION_DEVICE EPCS4
set_global_assignment -name MISC_FILE "D:/TERASIC_TEST/DE0/DE0_Default/DE0_Default.dpf"
set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS ON
set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL ON
set_global_assignment -name MISC_FILE "E:/DE0/DE0_Default/DE0_Default.dpf"
set_global_assignment -name VERILOG_FILE V/VGA_Ctrl.v
set_global_assignment -name VERILOG_FILE V/Reset_Delay.v
set_global_assignment -name VERILOG_FILE V/IMG_RAM.v
由上述文件內容可以知道,一個QSF文件分成4個部分
第一部分:芯片說明,和系統總體配置(修改)
第二部分:管腳分配
第三部分:電壓設置
第四部分:下載,文件關係(刪除)
經過測試 以上方法是可以的