【正文】
N2=S15。 WHEN S13=Q=1908。 ELSE CNT2:=0。 END IF。 IF CNT21 THEN CNT2:=CNT2+1。 N2=S7。 WHEN S5=Q=1134。 ELSE CNT2:=0。 END IF。 IF CNT22 THEN CNT2:=CNT2+1。SIGNAL N1 : STATE。END DFC1_architecture。 ELSIF RISING_EDGE(CLK) THEN I := I + 1。 RESET : IN STD_LOGIC。 END IF。039。s design tools, logic functions and other software and tools, and its AMPP partner logic functions, and any output files from any of the foregoing (including device programming or simulation files), and any associated documentation or information are expressly subject to the terms and conditions of the Altera Program License Subscription Agreement, Altera MegaCore Function License Agreement, or other applicable license agreement, including, without limitation, that your use is for the sole purpose of programming logic devices manufactured by Altera and sold by Altera or its authorized distributors. Please refer to the applicable agreement for further details. Generated by Quartus II Version (Build Build 151 09/26/2007) Created on Tue May 05 16:30:33 2009LIBRARY ieee。張老師不僅在學(xué)習(xí)上嚴(yán)格要求我,在生活上他也教會(huì)了我很多東西。因此運(yùn)用VHDL設(shè)計(jì)樂曲播放器使我獲益良多,我相信這將是我以后邁進(jìn)電子設(shè)計(jì)行業(yè)的敲門磚。主要工作如下: 第一,對目前EDA技術(shù)的發(fā)展?fàn)顩r、EDA技術(shù)的基本特征和Quartus II的開發(fā)環(huán)境進(jìn)行了簡要介紹,總結(jié)并分析了運(yùn)用Quartus II進(jìn)行硬件電路設(shè)計(jì)的開發(fā)流程。就每幅圖的波形來說,和要求實(shí)現(xiàn)的功能有一定的差距,這是因?yàn)橛肣uartus II的仿真工具進(jìn)行仿真時(shí),“End time”既結(jié)束時(shí)間不能設(shè)的太長,不然會(huì)需要很長時(shí)間才能仿真出結(jié)果來,同理,輸入時(shí)鐘周期也不能太小。模塊“ADDR” 是一個(gè)地址產(chǎn)生器,在這個(gè)地址產(chǎn)生器的作用下,將在模塊“ROM”中連續(xù)按順序在Q[11..0]處輸出各個(gè)音符的預(yù)置數(shù),從而控制“YGKZ”模塊輸出各個(gè)音調(diào)。設(shè)計(jì)實(shí)體的源程序見附錄Ⅶ,生成的相數(shù)據(jù)表是88的,總共有64個(gè)地址,其中存放最大值是整型2262,所以尋址所需位寬為12位。當(dāng)RESET為‘1’時(shí)模塊正常工作,產(chǎn)生從“0”到“63”再到“0”的地址,“63”時(shí)會(huì)自動(dòng)跳到地址“0”。考慮到這些因素,我們將輸入的分頻預(yù)置數(shù)設(shè)置的較小,從而緩解以上兩個(gè)不足所帶來的困難。“YGKZ”模塊的源程序見附錄Ⅴ。[6]此模塊需要包含所有需要播放的音符的分頻預(yù)置數(shù),所以此模塊的實(shí)現(xiàn)比較麻煩,程序也比較冗長?!癉FC1”的仿真波形圖①建立仿真實(shí)體在Quartus II的 Block Editor 中建立模塊“DFC1”: 模塊“DFC1”的仿真實(shí)體②模塊“DFC1”的仿真波形圖 模塊“DFC1”: 模塊“DFC1”的仿真波形此模塊的仿真和模塊“DFC”的仿真同理,圖中輸入時(shí)鐘CLK的頻率是100MHZ。RESET是一個(gè)復(fù)位信號(hào)輸入管腳,它的作用是保證每次開始計(jì)數(shù)時(shí)能夠從“0”開始。二、方案二的頂層設(shè)計(jì)方案二的頂層設(shè)計(jì)圖如下圖所示: 方案二的頂層設(shè)計(jì)圖 此設(shè)計(jì)中包含五個(gè)模塊,分別是節(jié)拍發(fā)生器“DFC”、分頻器“DFC1”、順序控制 “ROM” 模塊、音高控制模塊“YGKZ”和地址發(fā)生器“ADDR”。4.音高控制模塊:此模塊可以根據(jù)一定得分頻預(yù)置數(shù)產(chǎn)生一定的音符頻率,一定的頻率產(chǎn)生一定的音高??梢杂脝纹瑱C(jī)實(shí)現(xiàn),可以是基于FPGA的設(shè)計(jì),也可以是基于CPLD的設(shè)計(jì),還可以通過模擬電路來實(shí)現(xiàn)。這32個(gè)值的輸出,各個(gè)值所持續(xù)的節(jié)拍數(shù)不一樣,對于它們所需的節(jié)拍數(shù)在“SXKZ”模塊內(nèi)部用變量計(jì)數(shù)控制的方式控制。“YGKZ”的預(yù)置值“A[11..0]”與“Q”的輸出頻率又對應(yīng)關(guān)系。由于各個(gè)音符的頻率多為非整數(shù),而分頻數(shù)又不能為小數(shù),故必須將計(jì)算機(jī)得到的分頻數(shù)四舍五入取整。 JTAG設(shè)置對話框四、下載當(dāng)你的下載鏈中的文件與下載電纜已經(jīng)設(shè)置好了之后,點(diǎn)擊開始按鈕開始下載。 可以在Quartus II軟件中將Quartus II仿真器通道文件 (.scf) 另存為表文件,然后使用 Waveform Editor 打開表文件并另存為矢量波形文件。集成EDA仿真工具 _ 生成輸出網(wǎng)表文件 _ 功能與時(shí)序仿真庫 _ PowerGauge?功耗估算 _ 生成測試臺(tái)模板和內(nèi)存初始化文件使用EDA仿真工具和Quartus : 使用EDA仿真工具和Quartus II仿真器的仿真流程第二節(jié) 仿真環(huán)境簡介可以使用Quartus II仿真器在工程中仿真任何設(shè)計(jì)。二、綜合可以使用Compiler的Quartus II Analysis amp。Verilog設(shè)計(jì)文件和VHDL設(shè)計(jì)文件可以包含由Quartus II支持的構(gòu)造的任意組合。AHDL、VHDL和verilog HDL模板為您輸入 HDL語法提供了一個(gè)簡便的方法,可以提高設(shè)計(jì)輸入的速度和準(zhǔn)確度。 每個(gè)原理圖設(shè)計(jì)文件包含塊和符號(hào),這些塊和符號(hào)代表設(shè)計(jì)中的邏輯,Block Editor 將每個(gè)流程圖、原理圖或符號(hào)代表的設(shè)計(jì)邏輯融合到工程中。在執(zhí)行Quartus IIAnalysis amp??梢允褂肧ettings 對話框(Assignments 菜單)和Assignment Editor 設(shè)定初始設(shè)計(jì)約束條件。Framework能將來自不同EDA廠商的工具軟件進(jìn)行優(yōu)化組合,集成在一個(gè)易于管理的統(tǒng)一的環(huán)境之下,而且還支持任務(wù)之間、設(shè)計(jì)師之間在整個(gè)產(chǎn)品開發(fā)過程中實(shí)現(xiàn)信息的傳輸與共享,這是并行工程和TopDown設(shè)計(jì)方法的實(shí)現(xiàn)基礎(chǔ)。另外,VHDL還具有以下優(yōu)點(diǎn):VHDL的寬范圍描述能力使它成為高層次設(shè)計(jì)的核心,將設(shè)計(jì)人員的工作重心提高到了系統(tǒng)功能的實(shí)現(xiàn)與調(diào)試,只需花較少的精力用于物理實(shí)現(xiàn)。 硬件描述語言(HDLHardware Description Language)是一種用于設(shè)計(jì)硬件電子系統(tǒng)的計(jì)算機(jī)語言,它用軟件編程的方式來描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接形式,與傳統(tǒng)的門級描述方式相比,它更適合大規(guī)模系統(tǒng)的設(shè)計(jì)。 可編程邏輯器件自七十年代以來,經(jīng)歷了PAL、GAL、CPLD、FPGA幾個(gè)發(fā)展階段,其中 CPLD/FPGA屬高密度可編程邏輯器件,目前集成度已高達(dá)200萬門/片,它將掩膜ASIC集成度高的優(yōu)點(diǎn)和可編程邏輯器件設(shè)計(jì)生產(chǎn)方便的特點(diǎn)結(jié)合在一起,特別適合于樣品研制或小批量產(chǎn)品開發(fā),使產(chǎn)品能以最快的速度上市,而當(dāng)市場擴(kuò)大時(shí),它可以很容易的轉(zhuǎn)由掩膜ASIC實(shí)現(xiàn),因此開發(fā)風(fēng)險(xiǎn)也大為降低。 半定制ASIC芯片的版圖設(shè)計(jì)方法有所不同,分為門陣列設(shè)計(jì)法和標(biāo)準(zhǔn)單元設(shè)計(jì)法,這兩種方法都是約束性的設(shè)計(jì)方法,其主要目的就是簡化設(shè)計(jì),以犧牲芯片性能為代價(jià)來縮短開發(fā)時(shí)間。 現(xiàn)代電子產(chǎn)品的復(fù)雜度日益加深,一個(gè)電子系統(tǒng)可能由數(shù)萬個(gè)中小規(guī)模集成電路構(gòu) 成,這就帶來了體積大、功耗大、可靠性差的問題,解決這一問題的有效方法就是采用ASIC (Application Specific Integrated Circuits)芯片進(jìn)行設(shè)計(jì)。 10年前,電子設(shè)計(jì)的基本思路還是選擇標(biāo)準(zhǔn)集成電路自底向上(BottomUp)地構(gòu)造出一個(gè)新的系統(tǒng),這樣的設(shè)計(jì)方法就如同一磚一瓦地建造金字塔,不僅效率低、成本高而且還容易出錯(cuò)。EDA技術(shù)的應(yīng)用廣泛,現(xiàn)在已涉及到各行各業(yè)。但各國也正在努力開發(fā)相應(yīng)的工具?;谝陨喜蛔悖藗冮_始追求貫徹整個(gè)設(shè)計(jì)過程的自動(dòng)化,這就是EDA即電子系統(tǒng)設(shè)計(jì)自動(dòng)化[1]。EDA技術(shù)的設(shè)計(jì)者的工作僅限于軟件的方式,即利用硬件描述語言和EDA軟件來完成對系統(tǒng)硬件功能的實(shí)現(xiàn),這是電子設(shè)計(jì)技術(shù)的一個(gè)巨大進(jìn)步。 近30年電子設(shè)計(jì)技術(shù)的發(fā)展歷程,可將EDA技術(shù)分為三個(gè)階段。 日本、韓國都有ASIC設(shè)計(jì)工具,但不對外開放 。EDA水平不斷提高,設(shè)計(jì)工具已趨于完善。高層次設(shè)計(jì)給我們提供了一種自頂向下(TopDown)的全新的設(shè)計(jì)方法,這種設(shè)計(jì)方法首先從系統(tǒng)設(shè)計(jì)入手,在頂層進(jìn)行功能方框圖的劃分和結(jié)構(gòu)設(shè)計(jì)。ASIC按照設(shè)計(jì)方法的不同可分為:全定制ASIC,半定制ASIC,可編程ASIC(也稱為可編程邏輯器件)。 例如一個(gè)32位的加法器,利用圖形輸入軟件需要輸入500至1000個(gè)門,而利用VHDL語言只需要書寫一行A=B+C即可,而且VHDL語言可讀性強(qiáng), 易于修改和發(fā)現(xiàn)錯(cuò)誤。VHDL可以用簡潔明確的代碼描述來進(jìn)行復(fù)雜控制邏輯的設(shè)計(jì),靈活且方便,而且也便于設(shè)計(jì)結(jié)果的交流、保存和重用。第二章 開發(fā)環(huán)境介紹第一節(jié) QUARTUSⅡ介紹Quartus II設(shè)計(jì)軟件是Altera公司剛推出的一款功能強(qiáng)大的EDA工具,是適合單芯片可編程系統(tǒng)(SOPC)的最全面的設(shè)計(jì)環(huán)境。 設(shè)計(jì)輸入的流程圖Quartus II 軟件將工程信息存儲(chǔ)在 Quartus II工程配置文件 (.quartus) 中。 Synthesis期間,Quartus II軟件將按Add/Remove頁中顯示的順序處理文件??梢杂迷韴D設(shè)計(jì)文件中的塊建立新設(shè)計(jì)文件,可以在修改塊和符號(hào)時(shí)更新設(shè)計(jì)文件,也可以在原理圖設(shè)計(jì)文件的基礎(chǔ)上生成塊符號(hào)文件(.bsf)、AHDL包含文件(.inc)和HDL文件。還可以獲取有關(guān)所有AHDL元素、關(guān)鍵字和語句以及宏功能模塊和基本單元的上下文相關(guān)幫助。它們還可以包含Altera提供的邏輯函數(shù),包括基本單元和宏功能模塊以及用戶自定義的邏輯函數(shù)。 Synthesis模塊分析設(shè)計(jì)文件和建立工程數(shù)據(jù)庫。視所需的信息類型而定,可以進(jìn)行功能仿真以測試設(shè)計(jì)的邏輯運(yùn)算,也可以進(jìn)行時(shí)序仿真以在目標(biāo)器件中測試設(shè)計(jì)的邏輯運(yùn)算和最差時(shí)序。三、仿真 “Processing”里邊單擊“Simulator Tool”,選擇要仿真的已經(jīng)建立好的波形文件,先點(diǎn)“Generate Functional Simulation Netlist”生成網(wǎng)表文件。進(jìn)度表(Progress)中顯示目前完成下載的比率。若基準(zhǔn)頻率過低,則分頻數(shù)過小,四舍五入取整后的誤差較大。例如在“SXKZ”模塊中若輸出Q[11..0]=^D1908,將發(fā)音符為“2”音的信號(hào)頻率。將“SXKZ”模塊中所需輸出的值及其所需的節(jié)拍數(shù)全部統(tǒng)計(jì)如下表: 預(yù)置值節(jié)拍數(shù)對照表序號(hào)預(yù)置值節(jié)拍數(shù)序號(hào)預(yù)置值節(jié)拍數(shù)序號(hào)預(yù)置值節(jié)拍數(shù)11134312127222315152 212721131515224170123151521419081251908441272215113412612723595221612721271515161134117151512817011712721181701429190818113441917013302262 19151522015151311908110127212112723321272811113412211341,我們可以設(shè)計(jì)一個(gè)節(jié)拍發(fā)生器即“分頻器1”,用它產(chǎn)生一個(gè)固定時(shí)間長度的節(jié)拍,即給順序控制模塊提供一個(gè)頻率一定的時(shí)鐘信號(hào),為順序控制模塊控制每個(gè)音符的節(jié)拍數(shù)提供觸發(fā)信號(hào)和基準(zhǔn)依據(jù)??紤]到設(shè)計(jì)要求、可行性和設(shè)計(jì)成本,我們選擇了基于FPGA的設(shè)計(jì)方案。二、方案二此方案中順序控制模塊采用的ROM數(shù)據(jù)表方法實(shí)現(xiàn)的,: 分頻器1地址產(chǎn)生器音高控制模塊 分頻器2D/A轉(zhuǎn)換喇叭器順序控制模塊(ROM) 方案二的總體框圖此方案中除了順序控制模塊的實(shí)現(xiàn)方法不同外,還多了一個(gè)地址產(chǎn)生器模塊。此方案是在方案一的基礎(chǔ)上改變了順序控制模塊的實(shí)現(xiàn)方式,我們可以將樂曲《世上只有媽媽好》的所有音符按順序存放的ROM里邊,再給ROM模塊加一個(gè)地址發(fā)生器,把音符從ROM里邊按順序讀出;設(shè)計(jì)這個(gè)地址發(fā)生器ADDR,應(yīng)當(dāng)考慮到所要尋址的ROM數(shù)據(jù)表的位寬和字長。模塊“DFC1”的源程序見附