官术网_书友最值得收藏!

2.2 Quartus Ⅱ的設(shè)計(jì)流程

2.2.1 設(shè)計(jì)輸入

Quartus Ⅱ支持多種設(shè)計(jì)輸入方式。設(shè)計(jì)輸入可以采用文本形式的文件(如VHDL、Verilog HDL、AHDL等)、存儲(chǔ)器數(shù)據(jù)文件(如HEX、MIF等)、波形文件輸入、原理圖設(shè)計(jì)輸入和第三方EDA工具產(chǎn)生的文件(如EDIF、HDL、VQM等)。同時(shí),還可以混合使用以上幾種設(shè)計(jì)輸入文件進(jìn)行設(shè)計(jì)。

1. Verilog HDL/VHDL

HDL語言設(shè)計(jì)方法是大型模塊化設(shè)計(jì)工程中最常用的設(shè)計(jì)方法。目前較為流行的HDL語言有VHDL、Verilog HDL等。它們的共同特點(diǎn)是易于使用自頂向下的設(shè)計(jì)方法,易于模塊劃分和復(fù)用,移植性強(qiáng),通用性好,設(shè)計(jì)不因芯片工藝和結(jié)構(gòu)的改變而變化,利于向ASIC的移植等。HDL語言是純文本文件,用任何編輯器都可以編輯。有些編輯器集成了語言檢查、語法輔助模板等功能,這些功能給HDL語言的設(shè)計(jì)和調(diào)試帶來了很大的方便。

2. AHDL輸入方式

AHDL是完全集成到Quartus Ⅱ軟件系統(tǒng)中的一種高級(jí)模塊化語言,可以利用Quartus Ⅱ軟件文本編輯器或其他的文本編輯器產(chǎn)生AHDL文件。一個(gè)工程中可以全部使用AHDL語言,也可以和其他類型的設(shè)計(jì)文件混用。AHDL語言只能使用Altera器件FPGA/CPLD設(shè)計(jì),其代碼不能移植到其他廠商器件上(如Xilinx、Lattice等)使用,其通用性不強(qiáng),所以較少使用。

3. 模塊/原理圖輸入方式

原理圖輸入方式是FPGA/CPLD設(shè)計(jì)的基本方法之一,幾乎所有的設(shè)計(jì)環(huán)境都集成了原理圖輸入法。這種設(shè)計(jì)方法直觀、易用,支撐它的是一個(gè)功能強(qiáng)大、分門別類的器件庫(kù)。然而,由于器件庫(kù)元件通用性差,導(dǎo)致其移植性差,如更換設(shè)計(jì)實(shí)現(xiàn)的芯片型號(hào)時(shí),整個(gè)原理圖需要進(jìn)行很大的修改甚至是全部重新設(shè)計(jì),所以,原理圖設(shè)計(jì)方式主要是一種輔助設(shè)計(jì)方式,它更多應(yīng)用于混合設(shè)計(jì)中個(gè)別模塊設(shè)計(jì)。

2.2.2 綜合

向工程中添加設(shè)計(jì)文件及設(shè)置引腳鎖定后,下一步就是對(duì)工程進(jìn)行綜合。隨著FPGA/CPLD越來越復(fù)雜、性能要求越來越高,高級(jí)綜合在設(shè)計(jì)流程中成為一個(gè)重要的部分,綜合結(jié)果的優(yōu)劣直接影響了布局布線的結(jié)果。綜合的主要功能是將HDL語言翻譯成最基本的與門、或門、非門、RAM和觸發(fā)器等基本邏輯單元的鏈接關(guān)系(網(wǎng)絡(luò)表),并根據(jù)要求(約束條件),優(yōu)化所生成的門級(jí)邏輯鏈接,輸出網(wǎng)絡(luò)表文件,供布局、布線用。好的綜合工具能夠使設(shè)計(jì)占用芯片的物理面積更小,工作頻率更高。

Quartus Ⅱ集成綜合工具Analysis & Synthesis完全支持VHDL和Verilog HDL語言,并提供控制綜合過程的一些可選項(xiàng)。用戶可以在【Settings】對(duì)話框中選擇語言標(biāo)準(zhǔn),同時(shí)還可以制定Quartus Ⅱ軟件,將非Quartus Ⅱ軟件函數(shù)映射到Quartus Ⅱ軟件函數(shù)的庫(kù)映射文件(.lmf)上。

Analysis & Synthesis的分析階段將檢查工程的邏輯完整性和一致性,并檢查邊界連接和語法錯(cuò)誤。它使用多種算法減少門的數(shù)量,刪除冗余邏輯,并盡可能有效地利用器件體系結(jié)構(gòu)。分析完成后,構(gòu)建工程數(shù)據(jù)庫(kù),此數(shù)據(jù)庫(kù)中包含完全優(yōu)化的且合適的工程,該工程將用于為時(shí)序仿真、時(shí)序分析、器件編程等建立一個(gè)或多個(gè)文件。Quartus Ⅱ的綜合設(shè)計(jì)流程如圖2-3所示。

圖2-3 Quartus Ⅱ的綜合設(shè)計(jì)流程

2.2.3 布局布線

Quartus II Fitter也稱為PowerFit Fitter,執(zhí)行布局布線功能,這在Quartus Ⅱ軟件中也稱為“布局布線”。Fitter使用由Analysis & Synthesis建立的數(shù)據(jù)庫(kù),將工程的邏輯和時(shí)序要求與器件的可用資源相匹配。它將每個(gè)邏輯功能分配給最好的邏輯單元位置,進(jìn)行布線和時(shí)序分析,并選擇相應(yīng)的互連路徑和引腳分配。Quartus Ⅱ軟件中的布局布線流程如圖2-4所示。

圖2-4 布局布線設(shè)計(jì)流程圖

如果在設(shè)計(jì)中執(zhí)行了資源分配,F(xiàn)itter會(huì)試圖將這些資源分配與器件上的資源相匹配,并努力滿足已設(shè)置的任何其他約束條件,然后試圖優(yōu)化設(shè)計(jì)中的其余邏輯。如果尚未對(duì)設(shè)計(jì)設(shè)置任何約束條件,則Fitter將自動(dòng)優(yōu)化設(shè)計(jì)。如果找不到布局布線,F(xiàn)itter會(huì)終止編譯。

在【Settings】對(duì)話框中,可以指定是使用正常編譯還是智能編譯。如果使用智能編譯,編譯器將建立詳細(xì)的數(shù)據(jù)庫(kù),有助于將來更快地編譯,但這樣可能會(huì)占用額外的磁盤空間。在智能編譯之后的重新編譯期間,編譯器將評(píng)估自上次編譯以來對(duì)當(dāng)前設(shè)計(jì)所做的更改,然后只運(yùn)行處理這些更改所需的編譯模塊。如果對(duì)設(shè)計(jì)的邏輯做任何更改,編譯器在處理期間將使用所有模塊。此選項(xiàng)類似于Quartus II Smart Recompile命令(【Processing】菜單)。可以在包括Fitter模塊的Quartus Ⅱ軟件中啟動(dòng)全編譯,也可以單獨(dú)啟動(dòng)Fitter。在單獨(dú)啟動(dòng)Fitter之前,必須成功運(yùn)行Analysis & Synthesis。

2.2.4 時(shí)序分析

時(shí)序要求允許為整個(gè)工程、特定的設(shè)計(jì)實(shí)體或個(gè)別實(shí)體、節(jié)點(diǎn)和引腳指定所需要的速度性能。Quartus II Timing Analyzer(時(shí)序分析工具)允許用戶分析設(shè)計(jì)中所有邏輯的性能,并協(xié)助引導(dǎo)Fitter滿足設(shè)計(jì)中的時(shí)序分析要求。默認(rèn)情況下,時(shí)序分析工具作為全編譯的一部分自動(dòng)運(yùn)行,它觀察和報(bào)告時(shí)序信息,例如,建立時(shí)間(tSU)、保持時(shí)間(tH)、時(shí)鐘至輸出延時(shí)(tCO)、引腳至引腳延時(shí)(tPD)、最大時(shí)鐘頻率(fMAX)、延緩時(shí)間以及設(shè)計(jì)的其他時(shí)序特性。可以使用時(shí)序分析工具生成信息分析、調(diào)試和驗(yàn)證設(shè)計(jì)的時(shí)序性能;還可以使用Quartus Ⅱ時(shí)序分析工具進(jìn)行最少的時(shí)序分析,它報(bào)告最佳情況時(shí)序結(jié)果,驗(yàn)證驅(qū)動(dòng)芯片外信號(hào)的時(shí)鐘至引腳延時(shí)。

圖2-5 時(shí)序分析流程

1.指定工程范圍的時(shí)序設(shè)置

工程范圍的時(shí)序設(shè)置包括最大頻率、建立時(shí)間、保持時(shí)間、時(shí)鐘至輸出延時(shí)、引腳至引腳延時(shí)以及最低時(shí)序要求。還可以設(shè)置工程范圍的時(shí)鐘設(shè)置和多個(gè)時(shí)鐘域、路徑切割選項(xiàng)和默認(rèn)外部延時(shí)工程范圍的時(shí)序設(shè)置如表2-1所示。

表2-1 工程范圍的時(shí)序設(shè)置

2.指定個(gè)別時(shí)序分配

可以使用資源分配編輯器對(duì)個(gè)別實(shí)體、節(jié)點(diǎn)和引腳進(jìn)行個(gè)別時(shí)序分配。資源分配編輯器支持點(diǎn)到點(diǎn)時(shí)序分配和通配符,用于在分配時(shí)標(biāo)志特定節(jié)點(diǎn)。輸入的引腳和節(jié)點(diǎn)時(shí)序保存在當(dāng)前層次結(jié)構(gòu)中最高層實(shí)體的實(shí)體設(shè)置文件(.esf)中。在時(shí)序分析工具中可以進(jìn)行以下類型的個(gè)別時(shí)序分配。

(1)個(gè)別時(shí)鐘設(shè)置:通過定義時(shí)序要求和設(shè)計(jì)中所有時(shí)鐘信號(hào)之間的關(guān)系,進(jìn)行精確的多時(shí)鐘時(shí)序分析。

(2)多周期路徑:需要一個(gè)以上時(shí)鐘周期才能穩(wěn)定下來的寄存器之間的路徑,可以設(shè)置多周期路徑,指示時(shí)序分析工具調(diào)整其度量。

(3)剪切路徑:默認(rèn)情況下,如果沒有設(shè)置時(shí)序要求或只使用默認(rèn)的fMAX時(shí)鐘設(shè)置,Quartus Ⅱ軟件將切斷不相關(guān)時(shí)鐘域之間的路徑。如果設(shè)置了各個(gè)時(shí)鐘分配,但沒有定義時(shí)鐘分配之間的關(guān)系,Quartus Ⅱ也將切斷不相關(guān)時(shí)鐘域之間的路徑,還可以定義設(shè)計(jì)中特定路徑的剪切路徑。

(4)最少延時(shí)要求:特定節(jié)點(diǎn)或組的個(gè)別tH、最小tCO和最小tPD時(shí)序要求。可以對(duì)特定節(jié)點(diǎn)或組進(jìn)行這些分配,以超越工程范圍最小時(shí)序要求。

(5)外部延時(shí):指定信號(hào)從外部寄存器(器件之外)到達(dá)輸入引腳的延時(shí)。

(6)設(shè)計(jì)特定節(jié)點(diǎn)的個(gè)別tSUtPDtCO要求。

3.進(jìn)行時(shí)序分析

指定時(shí)序設(shè)置和分配之后,就可以進(jìn)行編譯。完成編譯之后,可以使用【Start】→【Start Timing Analysis】命令重新單獨(dú)運(yùn)行時(shí)序分析,或通過選擇【Start】→【Start Minimum Timing Analysis】命令運(yùn)行最少時(shí)序分析。

2.2.5 仿真

仿真的目的就是在軟件環(huán)境下,驗(yàn)證電路的行為與設(shè)想中的是否一致。在FPGA/CPLD中,仿真分為功能仿真和時(shí)序仿真。功能仿真是在設(shè)計(jì)輸入之后、綜合和布局布線之前的仿真,又稱為行為仿真或前仿真,不考慮電路的邏輯和門的時(shí)間延時(shí),著重考慮電路在理想環(huán)境下的行為和設(shè)計(jì)構(gòu)思的一致性。時(shí)序仿真又稱為后仿真,是在綜合、布局布線后,即電路已經(jīng)映射到特定的工藝環(huán)境后,考慮器件延時(shí)的情況下對(duì)布局布線的網(wǎng)絡(luò)表文件進(jìn)行的一種仿真,其中器件延時(shí)信息是通過反向標(biāo)注時(shí)序延時(shí)信息實(shí)現(xiàn)的。功能仿真的目的是設(shè)計(jì)出能工作的電路,它不是一個(gè)孤立的過程,與綜合、時(shí)序分析等形成一個(gè)反饋工作過程,只有過程收斂之后的綜合、布局布線等環(huán)節(jié)才有意義。所以,首先要保證功能仿真結(jié)果是正確的。不過,孤立的功能仿真通過也是沒有意義的,如果在時(shí)序分析中發(fā)現(xiàn)時(shí)序不能滿足要求,需要更改代碼,而功能仿真必須重新進(jìn)行。

Quartus Ⅱ軟件中集成的仿真器可以對(duì)工程中的設(shè)計(jì)或設(shè)計(jì)的一部分進(jìn)行功能仿真或時(shí)序仿真,其仿真流程如圖2-6所示。

圖2-6 Quartus Ⅱ軟件的仿真流程

2.2.6 編程與配置

用Quartus Ⅱ軟件成功編譯工程之后,就可以對(duì)Altera器件進(jìn)行編程或配置。Quartus Ⅱ編譯器的Assembler模塊生成編程文件,Quartus Ⅱ編程器可以用它與Altera編程硬件一起對(duì)器件進(jìn)行編程或配置,還可以使用Quartus Ⅱ編程器的獨(dú)立版本對(duì)器件進(jìn)行編程和配置。其編程設(shè)計(jì)流程如圖2-7所示。

圖2-7 編程設(shè)計(jì)流程

1.設(shè)置Assembler生成編程文件

Assembler自動(dòng)將Fitter的器件、邏輯單元和引腳分配轉(zhuǎn)換為該器件的編程圖像,這些圖像以目標(biāo)器件的一個(gè)或多個(gè)編程對(duì)象文件(.pof)或SRAM對(duì)象文件(.sof)的形式存在。Assembler通過以下方法之一以其他格式生成編程文件。

① 在【Device & Pin Options】對(duì)話框中,允許指定可選編程文件格式,例如,十六進(jìn)制(Intel格式)輸出文件(.hexout)、表格文本文件(.ttf)、原二進(jìn)制文件(.rbf)、Jam? 文件(.jam)、Jam字節(jié)代碼文件(.jbc)、串行矢量格式文件(.svf)和系統(tǒng)內(nèi)配置文件(.isc)。

② 利用【Create/Update】→【Create JAM, SVF, or ISC File】命令,生成Jam文件、Jam字節(jié)代碼文件、串行矢量格式文件或系統(tǒng)內(nèi)配置文件。

③ 利用【Convert Programming Files】命令將一個(gè)或多個(gè)SOF和POF組合轉(zhuǎn)換為其他輔助編程文件格式。例如,原編程數(shù)據(jù)文件(.rpd)、EPC16或SRAM的HEXOUT文件、POF、局域更新或遠(yuǎn)程更新的POF、原二進(jìn)制文件和表格文本文件。

2.設(shè)置編程器生成編程文件

編程器可以使用Assembler生成的POF和SOF對(duì)Quartus Ⅱ軟件支持的所有Altera器件進(jìn)行編程或配置。

Quartus Ⅱ編程器允許編輯CDF、CDF存儲(chǔ)器件名稱、器件順序和設(shè)計(jì)的可選編程文件名稱信息。可以通過一個(gè)或多個(gè)SOF、POF或通過單個(gè)Jam文件或Jam字節(jié)代碼文件對(duì)器件進(jìn)行編程或配置。

下面介紹使用編程器對(duì)一個(gè)或多個(gè)器件進(jìn)行編程的基本流程。

(1)將Altera編程硬件與系統(tǒng)相連,并安裝必要的啟動(dòng)程序。

(2)進(jìn)行設(shè)計(jì)的全編譯,或至少運(yùn)行Compiler的Analysis & Synthesis、Fitter和Assembler模塊。Assembler自動(dòng)為設(shè)計(jì)建立SOF和POF。

(3)打開編程器,建立新的CDF。每個(gè)打開的編程器窗口代表一個(gè)CDF;可以打開多個(gè)CDF,但每次只能使用一個(gè)CDF進(jìn)行編程。

(4)設(shè)置編程硬件。選擇的編程硬件設(shè)置將影響編程器中可用的編程模式類型。

(5)選擇相應(yīng)的編程模式。例如,被動(dòng)串行模式、JTAG模式、主動(dòng)串行編程模式或套接字內(nèi)編程模式。

(6)視編程模式而定,可以在CDF中添加、刪除或更改編程文件與器件的順序。可以指示編程器在JTAG鏈中自動(dòng)檢測(cè)Altera支持的器件,并將其添加至CDF器件列表中。還可以添加用戶自定義的器件。

(7)對(duì)于非SRAM穩(wěn)定器件,例如,配置器件、MAX 3000和MAX 7000器件,可以指定額外編程選項(xiàng)來查詢器件。

(8)啟動(dòng)編程器。

2.2.7 工程更改管理

Quartus II軟件允許在全編譯之后對(duì)設(shè)計(jì)進(jìn)行少量修改,通常稱為工程更改紀(jì)錄(ECO)。可以直接在設(shè)計(jì)數(shù)據(jù)庫(kù)上做這些ECO更改,而不是在源代碼或設(shè)置和配置文件上做,這樣就無須運(yùn)行全編譯來實(shí)施這些更改。工程更改流程如圖2-8所示。

圖2-8 工程更改流程

以下步驟概述了Quartus Ⅱ軟件中工程更改管理的設(shè)計(jì)流程。

(1)全編譯之后,使用Chip Editor查看設(shè)計(jì)布局布線詳細(xì)信息,并確定要更改的資源。如果需要的話,可以使用Netlist Explorer過濾和高亮顯示資源。

(2)使用Resource Property Editor編輯資源的內(nèi)部屬性。

(3)使用【Check Resource Properties】命令(在【Edit】菜單中)檢查資源更改的合法性。

(4)在更改管理器中查看更改的摘要和狀態(tài),并控制要實(shí)現(xiàn)和/或保存對(duì)資源屬性的哪些更改。還可以添加備注,幫助您引用每個(gè)更改。

(5)使用檢查和保存所有網(wǎng)表功能更改命令(【Check and Save All Netlist Changes】)檢查網(wǎng)表中所有其他資源更改的合法性。

(6)運(yùn)行Assembler,生成新的編程文件,或再次運(yùn)行EDA Netlist Writer,生成新網(wǎng)表。如果要驗(yàn)證時(shí)序更改,可以運(yùn)行時(shí)序分析工具。

主站蜘蛛池模板: 靖安县| 洞头县| 武穴市| 拜泉县| 尼木县| 都兰县| 临泉县| 易门县| 蓬安县| 宁城县| 乌兰察布市| 静安区| 蒲江县| 延川县| 茌平县| 育儿| 宣恩县| 富蕴县| 四平市| 邢台县| 凤阳县| 鸡西市| 合肥市| 桓仁| 盘锦市| 花莲县| 高雄市| 酒泉市| 宣恩县| 体育| 海林市| 桃江县| 庆云县| 阿克陶县| 滨海县| 循化| 珠海市| 伊宁市| 山东| 阆中市| 上犹县|