




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
計算機組成原理實驗指導(dǎo)書胡玥張曉彤張磊北京科技大學(xué)計算機實驗室2013年3月
前言在本書的編寫過程中,鄭榕老師、田軍峰老師參與了部分章節(jié)的編寫,同時得到了西安唐都科教儀器公司的大力支持,并提供了詳細的資料。劉宏嵐老師,李莉老師也給予了很大支持,在此編者一并深表感謝。由于作者水平有限,書中難免存在不足之處,敬請讀者批評指正。 編者2012年12月目錄前言 2第1章CM3+教學(xué)實驗系統(tǒng) 51.1系統(tǒng)安裝與構(gòu)成 51.2單元電路 71.2.1寄存器單元(REG) 71.2.2程序計數(shù)器與地址寄存器單元(PC&AR) 71.2.3指令寄存器單元(IR) 81.2.4CPU內(nèi)總線單元 101.2.5時序單元 101.2.6輸入單元(IN) 121.2.7輸出單元(OUT) 121.2.8總線單元 131.2.9存儲器單元(MEM) 131.2.10地址發(fā)生單元(ADDR) 141.2.11系統(tǒng)單元(SYS) 151.2.12控制臺開關(guān)單元(CON) 151.2.13其他單元 161.3FPGA擴展板 161.4聯(lián)機軟件 171.4.1軟件主界面區(qū)域 181.4.2聯(lián)機軟件的重要菜單功能 19第2章QuratusII軟件使用介紹 222.1基于原理圖的QuratusII設(shè)計使用 222.1.1建立工作目錄 232.1.2創(chuàng)建原理圖文件 232.1.3工程建立 272.1.4工程編譯 302.1.5工程仿真 342.1.6引腳綁定和下載 382.2基于VerilogHDL的設(shè)計流程 412.2.1建立工作目錄和源文件 412.2.2工程創(chuàng)建和編譯 422.2.3仿真、管腳綁定與下載 432.3基于VerilogHDL與原理圖的混合設(shè)計 442.3.1VerilogHDL描述轉(zhuǎn)換為原理圖 442.3.2原理圖轉(zhuǎn)換為VerilogHDL描述 45第3章計算機組成原理實驗 473.1運算器 473.1.1基本運算器實驗 473.1.2超前進位加法器設(shè)計實驗 523.1.3陣列乘法器設(shè)計實驗 563.2存儲系統(tǒng) 583.2.1靜態(tài)隨機存儲器實驗 583.2.2Cache控制器設(shè)計實驗 633.3控制器 683.3.1時序發(fā)生器設(shè)計實驗 683.3.2微程序控制器實驗 703.3.3硬布線控制器設(shè)計實驗 783.4模型計算機 803.4.1簡單模型機設(shè)計實驗 803.4.2復(fù)雜模型機實驗 85附錄AFPGA引腳分配圖 94附錄B單元電路芯片布局圖 95附錄C數(shù)據(jù)通路總圖 98
第1章CM3+教學(xué)實驗系統(tǒng)西安唐都科教儀器公司推出的CM3+計算機組成原理教學(xué)實驗系統(tǒng)采用了先進的部件結(jié)構(gòu)和接近現(xiàn)代通用計算機結(jié)構(gòu)的模型計算機。系統(tǒng)硬件的電路和布局按照計算機組成結(jié)構(gòu)進行設(shè)計,可以根據(jù)教學(xué)需要靈活改變系統(tǒng)的核心部件控制器和指令系統(tǒng),以及掛接其他外圍部件。該系統(tǒng)的聯(lián)機軟件提供了計算機部件和模型計算機的數(shù)據(jù)通路圖形調(diào)試界面,使得用戶很容易了解其內(nèi)部結(jié)構(gòu)和使用方法,并可實時跟蹤系統(tǒng)的工作狀態(tài)。聯(lián)機軟件還能夠自動記錄實驗過程,并以文件形式保存,從而能夠隨時進行回放檢查。此外,系統(tǒng)提供了總線競爭報警功能,具有多個保護電路,能夠確保系統(tǒng)運行的安全性。CM3+教學(xué)實驗系統(tǒng)采用傳統(tǒng)接線式和現(xiàn)代EDA方式兩種實驗手段,既能實現(xiàn)包括運算器、控制器和存儲器等關(guān)鍵的部件性實驗,又能完成簡單和復(fù)雜模型機設(shè)計實驗,有利于學(xué)生加深對計算機組成和原理的理解。此外,系統(tǒng)資源的完全開放性為學(xué)生自行設(shè)計各種結(jié)構(gòu)及不同復(fù)雜程度的模型計算機提供了良好的軟硬件平臺,有利于提高學(xué)生對計算機系統(tǒng)的綜合設(shè)計能力。1.1系統(tǒng)安裝與構(gòu)成CM3+教學(xué)實驗系統(tǒng)由硬件實驗箱和聯(lián)機軟件組成,在使用時需要將實驗箱與PC通過一根RS-232進行連接,并將聯(lián)機軟件安裝在該PC上,有的實驗可以在實驗箱上獨立完成。采用串口連接時,PC與實驗箱采用的通信協(xié)議規(guī)定為:57600波特、8位數(shù)據(jù)位、1位停止位、無校驗位。聯(lián)機軟件在啟動后自動檢測與實驗箱連接情況,并通過PC的串口向?qū)嶒炏渖系?9S51單片機控制單元發(fā)送指令,實現(xiàn)交互操作和顯示功能。采用EDA方式實現(xiàn)的部分部件實驗和模型機實驗需要在FPGA擴展板上進行,包括一片Cyclone系列的EP1C6Q240C8FPGA芯片(或者MaxII系列的EPM1270T144C5芯片)及其外圍電路。在使用QuartusII軟件編譯成功得到的編程文件對FPGA芯片內(nèi)的邏輯進行編程時,需要將FPGA擴展板與PC通過下載線連接,下載線一端連接PC的USB口,一端連接實驗箱的JTAG或者AS接口。實驗箱與PC的連接如圖1.1所示。若聯(lián)機軟件提示連接失敗,首先按下實驗箱復(fù)位鍵,檢查單片機的復(fù)位是否正確,然后檢查PC串口和實驗箱串口與通信電纜的連接是否良好,最后檢查電源的+5V輸出電壓是否正常,以及實驗接線或線路板上有無短路等情況,否則,需要更換MAX232芯片。圖1.1實驗箱與PC的連接實驗箱的硬件電路布局時按照計算機組成結(jié)構(gòu)來設(shè)計的,如圖1.2所示,最上面一部分是非操作區(qū)SYS單元,其余單元均為操作區(qū),在SYS單元之上裝有FPGA擴展板,邏輯測量單元和時序單元位于SYS單元的右側(cè)。圖1.2系統(tǒng)硬件布局所有構(gòu)成CPU的單元都放在中間區(qū)域的左邊,并標(biāo)注有CPU字樣,CPU對外表現(xiàn)的是3條總線:控制總線、數(shù)據(jù)總線和地址總線,并排位于CPU的右側(cè)。與3條總線掛接的主存和各種I/O設(shè)備都集中放在系統(tǒng)總線的右側(cè)。在實驗箱中上部對CPU、系統(tǒng)總線、主存及外設(shè)分別有清晰的絲印標(biāo)注,通過這3部分電路模塊可以方便地構(gòu)建各種不同復(fù)雜程度的模型計算機。在進行部件實驗時,有很多控制信號需要用二進制開關(guān)模擬給出,控制開關(guān)CON單元被安排在實驗箱的最下方,以方便學(xué)生的輸入操作。此外,在實驗箱左下角安排了一個地址發(fā)生單元ADDR,專門用來給出對微控器或是主存進行讀寫操作時所需的地址信息,以供實驗箱上的系統(tǒng)獨立運行。CM3+教學(xué)實驗系統(tǒng)的硬件組成如表1.1所示,其中,電源開關(guān)安排在SYS單元的左側(cè),系統(tǒng)電源已經(jīng)置于電路板下方機箱內(nèi)。注意:當(dāng)關(guān)閉電源后,不要立刻重新啟動,關(guān)閉到重新啟動之間需要至少30s間隔。表1.1CM3+硬件組成單元名稱說明MC單元T1、T2時序,微程序存儲器,微命令寄存器,微命令譯碼器,編程電路,LED顯示燈ALU單元算術(shù)運算部件,邏輯運算部件,桶形移位器,A、B顯示燈REG單元通用寄存器4片PC&AR單元程序計數(shù)器,地址寄存器IR單元指令寄存器,指令譯碼邏輯,寄存器譯碼邏輯CPU內(nèi)總線CPU內(nèi)部數(shù)據(jù)排線座控制總線讀寫譯碼邏輯,CPU中斷使能寄存器數(shù)據(jù)總線LED顯示燈,數(shù)據(jù)排線座地址總線LED顯示燈,地址譯碼電路,數(shù)據(jù)排線座IN單元8位開關(guān),LED顯示燈OUT單元數(shù)碼管,數(shù)碼管顯示譯碼電路MEM單元SRAM6116,編程電路8259單元8259一片8253單元8253一片CON單元3組8位開關(guān),系統(tǒng)清零按紐時序單元T1、T2時序發(fā)生電路,555多諧振蕩電路,單脈沖電路SYS單元系統(tǒng)監(jiān)視電路,總線競爭報警電路邏輯測量單元4路邏輯示波器擴展單元LED顯示燈,擴展接線座ADDR單元8位開關(guān),地址發(fā)生電路FPGA擴展板CycloneEP1C6Q240C8(或者MAXIIEPM1270T144C5),下載電路,LED顯示燈,擴展接線座1.2單元電路在實驗箱的電路板中,所有單元的T1、T2都連接至MC單元的T1、T2,CLR都連接至CON單元的CLR按鈕;所有的LED燈均為正邏輯,即1時亮,0時滅;凡是在電路板上絲印標(biāo)注有馬蹄形標(biāo)記“”的都表示這兩根排針之間是連通的。1.2.1寄存器單元(REG)寄存器單元由4片8位寄存器R0~R3組成,用于保存操作數(shù)及中間運算結(jié)果等,其中R2兼做變址寄存器,R3兼做堆棧指針。4個寄存器的輸入輸出都已連至CPU內(nèi)總線,以R0為例,其電路構(gòu)成如圖1.3所示。圖1.3REG單元(R0)原理圖1.2.2程序計數(shù)器與地址寄存器單元(PC&AR)該單元由程序計數(shù)器PC和地址寄存器AR構(gòu)成,其中程序計數(shù)器的輸入和輸出以及地址寄存器的輸入已接至CPU內(nèi)總線,地址寄存器的輸出以排針形式引出A7~A0,其電路原理如圖1.4所示。圖1.4PC&AR單元原理圖1.2.3指令寄存器單元(IR)指令寄存器單元包括指令譯碼電路INS_DEC、寄存器譯碼電路REG_DEC和指令寄存器,其中指令寄存器的輸入和輸出都以排針形式引出,構(gòu)成模型機時實現(xiàn)程序的跳轉(zhuǎn)控制和對通用寄存器的選擇控制,其電路構(gòu)成如圖1.5所示。指令譯碼電路INS_DEC使用一片GAL20V8實現(xiàn),內(nèi)部原理如圖1.6所示;寄存器譯碼電路REG_DEC使用一片GAL16V8實現(xiàn),內(nèi)部原理如圖1.7所示。利用QuartusII軟件工具和該系統(tǒng)提供的FPGA擴展板,使用者可以根據(jù)需要對指令譯碼電路和寄存器譯碼電路進行實現(xiàn)或重新設(shè)計,通過對FPGA芯片內(nèi)的邏輯進行編程實現(xiàn)相應(yīng)的電路,從而擴展模型機的指令系統(tǒng)。圖1.5IR單元原理圖圖1.6指令譯碼原理圖圖1.7寄存器譯碼原理圖1.2.4CPU內(nèi)總線單元內(nèi)總線單元由3排8線排針組成,是CPU內(nèi)部數(shù)據(jù)的集散地,它們之間的對應(yīng)位是相互連通的,每個部件的輸入數(shù)據(jù)來自于CPU內(nèi)總線輸出數(shù)據(jù)也要通過CPU內(nèi)總線到達目的地。在CM3+教學(xué)實驗系統(tǒng)中,已經(jīng)和CPU內(nèi)總線掛接的單元有:ALU的輸出、R3~R0的輸入和輸出、PC的輸入和輸出、AR的輸入和CPU外部的數(shù)據(jù)總線,凡連通的線路在實驗電路板上都有絲印連線。1.2.5時序單元時序單元可以提供3種時序:Φ、KK和TS。Φ為555構(gòu)成的多諧振蕩器的輸出,其原理如圖1.8所示,頻率大約為60~70Hz,占空比約為50%,其中C1取0.01μF,C2取1μF,R1取1kΩR2取10kΩ。每按動一次KK按鈕,在KK+和KK-端分別輸出一個上升沿和一個下降沿脈沖,其原理如圖1.9所示。每按動一次TS按鈕,將對單片機INT1產(chǎn)生一次中斷請求,其原理如圖1.10所示,單片機根據(jù)時序開關(guān)檔位不同在TS1和TS2端輸出不同的波形。圖1.8555多諧振蕩器原理圖圖1.9KK單脈沖電路原理圖圖1.10TS時序請求原理圖圖1.11連續(xù)時序圖1.12單步時序圖1.13單拍時序當(dāng)時序狀態(tài)開關(guān)處于“連續(xù)”檔時,TS1和TS2輸出如圖1.11所示的連續(xù)時序。在停止輸出連續(xù)時序時,第一種方法是將時序狀態(tài)開關(guān)撥至非連續(xù)檔,第二種方法是按動CON單元的CLR按鈕或SYS單元的復(fù)位按鈕。當(dāng)時序狀態(tài)開關(guān)處于“單步”檔時,TS1和TS2只輸出一個CPU周期的波形,如圖1.12所示。當(dāng)時序狀態(tài)開關(guān)處于“單拍”檔時,TS1和TS2交替出現(xiàn),如圖1.13所示。1.2.6輸入單元(IN)輸入單元使用8個撥碼開關(guān)作為輸入設(shè)備,其電路原理如圖1.14所示,其中右邊表示一個撥碼開關(guān)的連接原理,撥碼開關(guān)采用的是雙刀雙擲開關(guān),一刀用來輸出數(shù)據(jù),一刀用來在LED燈上顯示開關(guān)狀態(tài)。圖1.14IN單元原理圖1.2.7輸出單元(OUT)輸出單元中,數(shù)據(jù)由鎖存器74LS273進行鎖存,并通過兩片GAL16V8進行顯示譯碼,形成數(shù)碼管顯示的驅(qū)動信號,具體電路原理如圖1.15所示。圖1.15OUT單元原理圖1.2.8總線單元控制總線單元包含CPU對存儲器和IO進行讀寫時的讀寫譯碼電路、CPU中斷使能寄存器、外部中斷請求(INTR)指示燈和CPU中斷使能(EI)指示燈。其中,讀寫譯碼電路在GAL16V8種實現(xiàn),實現(xiàn)原理如圖1.16所示,CPU中斷使能寄存器及其指示燈電路如圖1.17所示。數(shù)據(jù)總線是CPU和主存以及外設(shè)之間數(shù)據(jù)交換的通道,包含兩排8線排針,排針的相應(yīng)位已和CPU內(nèi)總線連通,存儲器和外設(shè)的數(shù)據(jù)線也已掛接到數(shù)據(jù)總線。另外,8位反相器74LS240主要為了顯示數(shù)據(jù)總線的數(shù)據(jù)而設(shè)計,這樣數(shù)據(jù)總線上的指示燈可以按負邏輯的接法進行正邏輯顯示,以增強系統(tǒng)的穩(wěn)定性。如果沒有單元輸出數(shù)據(jù)到數(shù)據(jù)總線,即74LS240輸入懸空,則8位指示燈全亮。地址總線單元由兩排已連通的8線排針、I/O地址譯碼芯片74LS139、地址指示燈和一片74LS245組成。為了選擇I/O,產(chǎn)生I/O片選信號,還需要進行I/O地址譯碼,系統(tǒng)的I/O地址譯碼原理如圖1.18所示。由于采用地址總線的高兩位進行譯碼,因此I/O地址空間被分為4個區(qū),如表1.2所示。圖1.16讀寫譯碼原理圖1.17CPU中斷使能寄存器圖1.18I/O地址譯碼原理圖表1.2A7A6選定地址空間00IOY000~3F01IOY140~7F10IOY280~BF11IOY3C0~FF1.2.9存儲器單元(MEM)存儲器單元包括一片靜態(tài)隨機存儲器SRAM6116及其編程電路,如圖1.19所示。編程電路能夠?qū)崿F(xiàn)對存儲器的手動讀寫。根據(jù)編程開關(guān)的狀態(tài)選擇,可以實現(xiàn)編程、校驗和運行三種功能。圖1.19存儲器原理圖編程開關(guān)處于“編程”檔時,SA7~SA0所對應(yīng)的74LS245三態(tài)門打開,位于地址總線上的A7~A0所對應(yīng)的74LS245三態(tài)門關(guān)閉,地址來自手動輸入,而不是來自地址總線,SD7~SD0對應(yīng)的74LS245也打開,數(shù)據(jù)來自手動輸入,此時如果給出T2脈沖,編程電路將給出WE信號,完成對存儲器的寫操作。編程開關(guān)處于“校驗”檔時,SA7~SA0所對應(yīng)的74LS245三態(tài)門打開,位于地址總線上的A7~A0所對應(yīng)的74LS245三態(tài)門關(guān)閉,地址來自手動輸入,而不是來自地址總線,SD7~SD0所對應(yīng)的74LS245也關(guān)閉,編程電路給出OE信號,數(shù)據(jù)從存儲器讀出,并在數(shù)據(jù)總線上顯示。編程開關(guān)處于“運行”檔時,SA7~SA0所對應(yīng)的74LS245三態(tài)門關(guān)閉,位于地址總線上的A7~A0所對應(yīng)的74LS245三態(tài)門打開,地址來自地址總線,而不是來自手動輸入,SD7~SD0所對應(yīng)的74LS245也關(guān)閉,存儲器的讀寫信號由MR和MW給出,即相當(dāng)于把存儲器的數(shù)據(jù)線掛到數(shù)據(jù)總線,地址線掛到地址總線,而讀寫控制線由用戶控制。1.2.10地址發(fā)生單元(ADDR)在不與PC聯(lián)機情況下,CM3+教學(xué)實驗系統(tǒng)可以獨立運行,此時對微控器和存儲器的讀寫操作都需要通過ADDR單元手動給出地址。ADDR單元的原理如圖1.20所示。根據(jù)尋址地址連續(xù)與否,可以選擇不同的檔位,二進制開關(guān)也是雙刀雙擲開關(guān)。圖1.20ADDR單元原理圖當(dāng)開關(guān)為“加1”檔時,在T2的下沿計數(shù)器進行加1計數(shù)。當(dāng)開關(guān)為“減1”檔時,在T2的下沿計數(shù)器進行減1計數(shù)。當(dāng)開關(guān)為“置數(shù)”檔時,計數(shù)器置初值,其作用相當(dāng)于直通,SA7~SA0的輸出值就是二進制開關(guān)組的值。1.2.11系統(tǒng)單元(SYS)系統(tǒng)單元是為了和PC連接而設(shè)計的,其原理是通過單片機的串口和PC的串口相連,PC以命令形式和單片機進行交互,當(dāng)單片機收到某命令后,產(chǎn)生相應(yīng)的時序,實現(xiàn)指定的操作。SYS單元還安排了一個檢測電路,當(dāng)總線上數(shù)據(jù)發(fā)生競爭時,蜂鳴器會發(fā)出“嘀”警報聲。SYS單元還有個重要職責(zé):當(dāng)TS按鈕按下時會對單片機的INT1產(chǎn)生一個中斷請求,此時單片機根據(jù)時序單元狀態(tài)開關(guān)的檔位,產(chǎn)生相應(yīng)的時序。邏輯示波器啟動后,單片機會定期采樣邏輯測量單元的四路邏輯示波器CH3~CH0,并將采樣所得數(shù)據(jù)通過串口發(fā)送到PC,PC再根據(jù)收到的數(shù)據(jù),在屏幕上繪制波形。1.2.12控制臺開關(guān)單元(CON)控制臺開關(guān)單元包含一個系統(tǒng)總清零按鈕CLR和24個雙刀雙擲開關(guān),一刀用來提供數(shù)據(jù),一刀用來顯示開關(guān)值,其連接原理如圖1.14所示。開關(guān)分為SD27~SD20、SD17~SD10和SD07~SD00三組,部分開關(guān)有雙重絲印,即一個開關(guān)可能對應(yīng)兩個排針,根據(jù)絲印就能找到開關(guān)和排針的對應(yīng)關(guān)系。CLR按鈕平時為高,按下后CLR輸出變?yōu)榈停瑸橄到y(tǒng)部件提供清零信號。按下CLR按鈕后會清零的部件有:程序計數(shù)器PC、地址寄存器AR、暫存器A、暫存器B、指令寄存器IR、微地址寄存器MAR、微指令寄存器MIR和ADDR單元。1.2.13其他單元擴展單元由8個LED顯示燈、電源(+5V)和地排針,以及3排8線排針組成,其中8線排針相應(yīng)位已連通,主要是為了電路轉(zhuǎn)接設(shè)計的。此外運算器單元(ALU)、微程序控制器(MC)單元、8259單元和8253單元的連接見第三章中的相關(guān)實驗內(nèi)容。1.3FPGA擴展板CM3+教學(xué)實驗系統(tǒng)的部分實驗在FPGA擴展板上進行,擴展板由兩大部分組成,一是LED顯示燈,兩組16只,供調(diào)試時觀測數(shù)據(jù)。另外就是一片CycloneEP1C6Q240C8FPGA芯片及其外圍電路。EP1C6Q240C8FPGA有240個引腳,分成4個塊,即BANK1~BANK4,如圖1.21所示,不同的塊支持的I/O標(biāo)準(zhǔn)略有不同,其中每塊的引腳數(shù)均為60個,對應(yīng)關(guān)系如表1.3所示。將每個塊的通用I/O引腳加以編號,就形成A01~A34、D01~D38等I/O號。擴展板上排針的絲印分為兩部分,一是I/O號,以A、B、C、D開頭,如A15,二是芯片引腳號,是純數(shù)字如21。在QuartusII軟件中分配管腳時使用引腳號,而在實驗接線圖中,都以I/O號來描述。EP1C6Q240C8FPGA共有165個I/O管腳,該擴展板引出134個,其中84個裝有排針,其余50個以預(yù)留形式給出,在擴展板上絲印標(biāo)為JP,JP座的I/O分配如圖1.22所示。圖1.21塊分布示意圖圖1.22JP座引腳信息表1.3管腳信息塊號管腳數(shù)管腳號1601~60260181~240360121~18046061~120在使用該擴展板進行部件或模型機實驗時,首先按照第二章介紹的兩種設(shè)計流程,在QuartusII軟件正常編譯完成后得到sof和pof格式的編程文件,然后通過擴展板上配置的兩個FPGA編程接口(JTAG和AS)對FPGA芯片內(nèi)的邏輯編程,并連接外圍實驗電路,實驗結(jié)果可通過聯(lián)機軟件或者LED燈觀察。注意:由于該擴展板與實驗箱的電路板是相互獨立的,因此在使用時應(yīng)單獨連接電源線和地線。1.4聯(lián)機軟件CM3+教學(xué)實驗系統(tǒng)安裝有一個標(biāo)準(zhǔn)的D型9針RS-232C串口插座,使用串口線可通過串口將PC與實驗箱連接,從而實現(xiàn)PC與實驗系統(tǒng)的聯(lián)機操作。隨機配套的聯(lián)機軟件通過PC上的串口向?qū)嶒炏渖系膯纹瑱C控制單元發(fā)送指令,從而單片機直接對程序存儲器、微程序控制器等進行讀寫,并可實現(xiàn)單步微程序、單步機器指令和程序連續(xù)運行等操作。聯(lián)機軟件的主界面如圖1.23所示,由指令區(qū)、輸出區(qū)和圖形區(qū)3部分組成,并提供了菜單和常用工具欄等操作元素。圖1.23軟件主界面1.4.1軟件主界面區(qū)域(1)指令區(qū)分為機器指令區(qū)和微指令區(qū),指令區(qū)下方有兩個按鈕,可通過按鈕在兩者間切換。機器指令區(qū):分為兩列,第一列為主存地址(00—FF,共256個單元),第二列為每個地址所對應(yīng)的數(shù)值,占1個字節(jié)。串口通信正常且串口無其它操作,可以直接修改指定單元的內(nèi)容,用鼠標(biāo)單擊要修改單元的數(shù)據(jù),此時單元格會變成一個編輯框,即可輸入數(shù)據(jù),編輯框只接收兩位合法的16進制數(shù),按回車鍵確認,或用鼠標(biāo)點擊別的區(qū)域,即可完成修改工作。按下ESC鍵可取消修改,編輯框會自動消失,恢復(fù)顯示原來的值,也可以通過上下方向鍵移動編輯框。微指令區(qū):分為兩列,第一列為微控器地址(00—3F,共64個單元),第二列為每個地址所對應(yīng)的微指令,占3個字節(jié)。修改微指令操作和修改機器指令一樣,只是位數(shù)不同。(2)輸出區(qū)輸出區(qū)由“輸出”選項卡、“輸入”選項卡和“結(jié)果”選項卡組成。“輸出”選項卡:在數(shù)據(jù)通路圖打開,且該通路中用到微程序控制器,運行程序時,輸出區(qū)用來實時顯示當(dāng)前正在執(zhí)行的微指令和下條將要執(zhí)行的微指令的24位微碼及其微地址。當(dāng)前正在執(zhí)行微指令的顯示可通過菜單命令“設(shè)置”->“當(dāng)前微指令”進行開關(guān)?!拜斎搿边x項卡:可以對微指令進行按位輸入及模擬,鼠標(biāo)左鍵單擊ADDR值,此時單元格會變成一個編輯框,即可輸入微地址,輸入完畢后回車,編輯框消失,后面的24位代表當(dāng)前地址的24位微碼,微碼值用紅色顯示,鼠標(biāo)左鍵單擊微碼值可使該值在0和1之間切換。在數(shù)據(jù)通路圖打開時,單擊“模擬”按鈕,可以在數(shù)據(jù)通路中模擬該微指令的功能,按動“修改”按鈕則可以將當(dāng)前顯示的微碼值下載到下位機。“結(jié)果”選項卡:用來顯示一些提示信息或錯誤信息,保存和裝載程序時會在這一區(qū)域顯示一些提示信息。在系統(tǒng)檢測時,也會在這一區(qū)域顯示檢測狀態(tài)和檢測結(jié)果。(3)圖形區(qū)可以在此區(qū)域編輯指令,顯示各個實驗的數(shù)據(jù)通路圖、示波器界面等,便于用戶對實驗過程的直觀理解。1.4.2聯(lián)機軟件的重要菜單功能(1)“端口”菜單利用“端口選擇”選項可以選擇通信端口,該命令會自動檢測當(dāng)前系統(tǒng)可用的串口號,并列于組合框中,選擇某一串口后,按確定按鈕,對選定串口進行初始化操作。在串口初始化成功后,可以對當(dāng)前選擇的串口進行聯(lián)機通信測試,并報告測試結(jié)果。只測一次,如果聯(lián)機成功,則將指令區(qū)初始化。(2)“檢測”菜單為了更好地維護設(shè)備和便于實驗排錯,實驗系統(tǒng)提供了兩種系統(tǒng)檢測功能,一種是針對簡單模型機和復(fù)雜模型機這類復(fù)雜實驗的實驗接線檢測,連線檢測結(jié)果會在聯(lián)機軟件“輸出區(qū)”的“結(jié)果”選項卡進行顯示,然后對照圖1.2所示的系統(tǒng)布局圖和附錄B單元電路芯片布局圖可以在實驗電路板上找到對應(yīng)的芯片。另一種是針對維護的系統(tǒng)檢測,可以進行部件或整機檢測,進行微控器或存儲器檢測時不需要連線,其余都需要連線。與連線檢測不同,連線檢測只報告連線錯誤,而系統(tǒng)檢測不僅報告連線錯誤,而且還報告系統(tǒng)中可能存在的錯誤,比如哪些芯片可能已被損壞,錯誤報告中芯片的編號信息見附錄B。對于系統(tǒng)檢測提供了5種不同的方案,即MC&MEM單元檢測、ALU單元檢測、REG單元檢測、PC&AR單元檢測和整機檢測。檢測是對系統(tǒng)的部分通路進行自檢,通過分析并得出系統(tǒng)可能出錯的電路,為用戶產(chǎn)生測試報告。在檢測報告中,會指出哪些芯片可能出錯,其中芯片的命名規(guī)則是:模塊名_芯片型號_序號,例如SYS_245_6表示SYS單元的第6片74LS245芯片,這些名字可以在附錄B中查到。系統(tǒng)檢測有些是需要接線的,針對部件的系統(tǒng)檢測接線比較少,而整機檢測主要是針對復(fù)雜模型機進行,所以和復(fù)雜模型機相關(guān)的通路都會被檢測到。(3)“轉(zhuǎn)儲”菜單選擇“裝載數(shù)據(jù)”選項可以打開任意路徑下的“*.TXT”文件,如果指令文件合法,能夠?qū)⒅付ㄎ募械臄?shù)據(jù)裝載到下位機中。在裝載指令時,系統(tǒng)提供了一定的檢錯功能,如果指令文件中有錯誤的指令,將會導(dǎo)致系統(tǒng)退出裝載,并提示錯誤的指令行。指令文件中指令書寫格式如下:例如機器指令$P00FF,其中“$”為標(biāo)記號,P代表機器指令,00為機器指令的地址,F(xiàn)F為該地址中的數(shù)據(jù);再如微指令$M00AA7FF,其中“$”為標(biāo)記號,M代表微指令,00為機器指令的地址,AA77FF為該地址中的數(shù)據(jù)。選擇“保存數(shù)據(jù)”選項可以將下位機的主存和微控器中的數(shù)據(jù)保存到上位機硬盤中,選擇保存主存數(shù)據(jù)或保存微存數(shù)據(jù)可以將機器指令或微指令存儲在指定路徑的“*.TXT”文件中。選擇“刷新指令區(qū)”選項即從下位機的存儲器中讀取所有機器指令和微指令,并在指令區(qū)顯示。(4)“調(diào)試”菜單當(dāng)微控器實驗、簡單模型機和綜合性實驗中任一數(shù)據(jù)通路圖打開時,可用“微程序流程圖”選項來打開指定的微程序流程圖,選擇該選項會彈出打開文件對話框。選擇“單節(jié)拍”命令,將向下位機發(fā)送單節(jié)拍命令,下位機完成一個節(jié)拍的工作。選擇“單周期”命令,將向下位機發(fā)送單周期命令,下位機完成一個機器周期的工作。選擇“單步機器指令”,將向下位機發(fā)送單步機器指令命令,下位機運行一條機器指令。選擇“連續(xù)運行”,將向下位機發(fā)送連續(xù)運行命令,下位機將會進入連續(xù)運行狀態(tài)。如果下位機處于連續(xù)運行狀態(tài),選擇“停止運行”選項可以使下位機停止運行。(5)“回放”菜單系統(tǒng)能夠自動記錄實驗過程,并可以文件形式保存。使用“回放”菜單可以打開現(xiàn)存的數(shù)據(jù)文件、將當(dāng)前數(shù)據(jù)保存到文件、跳轉(zhuǎn)到首/末頁、向前/后翻一頁以及停止連續(xù)向后翻頁等功能。(6)“設(shè)置”菜單流動速度(L)是用來設(shè)置數(shù)據(jù)通路圖中數(shù)據(jù)的流動速度,選擇該命令會彈出一個流動速度設(shè)置對話框,如圖1.24所示。拖動滑動塊至適當(dāng)位置,點擊“確定”按鈕即完成設(shè)置。圖1.24流動速度設(shè)置對話框系統(tǒng)顏色(C)是用來設(shè)置數(shù)據(jù)通路圖、微程序流程圖和示波器的顯示顏色,選擇該命令會彈出一個設(shè)置對話框,如圖1.25所示。圖1.25系統(tǒng)顏色設(shè)置對話框分為三頁,分別為通路圖、微流圖和示波器,按動每頁的TAB按鈕,可在三頁之間切換。選擇某項要設(shè)置的對象,然后按下“更改”按鈕,或直接用鼠標(biāo)左鍵點擊要設(shè)置對象的顏色框,可彈出顏色選擇對話框,選定好顏色后,點擊“應(yīng)用”按鈕相應(yīng)對象的顏色就會被修改掉。當(dāng)前微指令是用來設(shè)置“輸出區(qū)”的“輸出”選項卡是否顯示當(dāng)前微指令,當(dāng)前微指令用灰色顯示,并在地址欄標(biāo)記為“C”,下條將要執(zhí)行的微指令標(biāo)記為“N”。
第2章QuratusII軟件使用介紹QuartusII軟件是Altera公司推出的FPGA集成開發(fā)環(huán)境,是上一代開發(fā)環(huán)境MAX+plusII的更新?lián)Q代產(chǎn)品,提供了完全集成且與電路結(jié)構(gòu)無關(guān)的設(shè)計環(huán)境,使設(shè)計者能夠方便地完成設(shè)計輸入、綜合、布局布線、仿真測試和器件編程等所有工作,能夠完成可編程片上系統(tǒng)的設(shè)計與開發(fā)。QuartusII軟件工具支持原理圖、VHDL、Verilog、AHDL(AlteraHDL)以及混合輸入方式的設(shè)計流程,可以使用內(nèi)嵌的綜合器或者如Modelsim這種第三方仿真器對設(shè)計進行功能和時序仿真;QuartusII的一些高級特征,如可以在系統(tǒng)設(shè)計中使用宏模塊、允許第三方EDIF文件輸入等,為使用FPGA芯片上的各種異構(gòu)資源,如存儲器、DSP模塊、LVDS模塊等提供了便利;此外,QuartusII還可以與Matlab等工具結(jié)合使用,進行復(fù)雜數(shù)字系統(tǒng)的設(shè)計與開發(fā)。使用QuartusII軟件能夠完成設(shè)計流程的所有階段,它是一個全面易用的獨立解決方案。QuartusII軟件提供了基于原理圖的多層次設(shè)計功能,同時具有適用于各種需要的元件庫,包括基本邏輯元件庫(如基本邏輯門電路、觸發(fā)器、IO管腳等)、宏功能元件(包含幾乎所有的74系列的器件)和參數(shù)可設(shè)置的宏功能模塊LPM庫等。使用原理圖設(shè)計能夠在不具備硬件描述語言等編程技術(shù)的條件下進行任意層次的數(shù)字系統(tǒng)設(shè)計,能夠?qū)θ我鈱哟蜗到y(tǒng)的功能進行精確的仿真,迅速確定電路系統(tǒng)的錯誤所在并能隨時糾正,能夠方便地修正設(shè)計方案,并且能夠使用FPGA芯片進行任意次系統(tǒng)的硬件測試驗證,為現(xiàn)代數(shù)字電路系統(tǒng)提供了良好的設(shè)計環(huán)境。2.1基于原理圖的QuratusII設(shè)計使用本節(jié)以全加器電路為例說明QuartusII軟件中基于原理圖的設(shè)計流程,下面首先給出全加器的邏輯表達式和電路圖。如果不考慮來自低位的進位,將兩個1位的二進制數(shù)相加稱為半加,按照二進制加法運算規(guī)則可以列出半加器的真值表,進而求出式(2.1)所示的邏輯表達式,其中A、B為兩個加數(shù),S是相加的和,Co是向高位的進位。S=AB+AB=A⊕B(2.1)Co=A?B因此半加器是由一個異或門和一個與門組成的,如圖2.4所示。圖2.4半加器電路圖將兩個多位二進制數(shù)相加時,除了最低位以外,每一位都應(yīng)考慮來自低位的進位,即將兩個對應(yīng)位的加數(shù)和來自低位的進位3個數(shù)相加稱為全加。根據(jù)二進制加法運算的規(guī)則可以列出全加器的真值表,進而求得式(2.2)所示的邏輯表達式,其中A、B為兩個加數(shù),Ci為來自低位的進位,S為相加的和,Co為向高位的進位。S=ABCi+ABCi+ABCi+ABCi=CiCo=AB+BCi因此全加器可由兩個半加器和一個或門構(gòu)成,如圖2.5所示。圖2.5全加器電路圖下面詳細給出使用QuartusII軟件、采用原理圖輸入方式設(shè)計全加器電路并使其在FPGA芯片上運行的實現(xiàn)流程。2.1.1建立工作目錄使用QuartusII軟件實現(xiàn)的每一項設(shè)計都是一個工程,應(yīng)首先建立一個存儲工程項目設(shè)計文件的工作目錄,該目錄被QuartusII軟件默認為工作庫,如E:\full_adder。注意,文件夾的名稱不能用中文。如果設(shè)計的規(guī)模比較大,可將每個子設(shè)計作為相互獨立的工程存放在對應(yīng)的子目錄中,將同一工程的所有文件放在同一個目錄中以便于管理。2.1.2創(chuàng)建原理圖文件1)新建原理圖文件打開QuartusII軟件,選擇File菜單下的New選項,在彈出對話框的DeviceDesignFiles選項卡中選擇BlockDiagram/SchematicFile選項,表示采用原理圖方式輸入設(shè)計文件,如圖2.6所示,然后雙擊該項或單擊OK按鈕,即可打開原理圖編輯窗口。根據(jù)本示例的設(shè)計步驟,首先設(shè)計實現(xiàn)半加器。圖2.6編輯文件的類型2)添加元件和連接線在編輯窗口的任何位置單擊鼠標(biāo)左鍵,在彈出的快捷菜單中選擇輸入元件項(Insert→Symbol),或者在空白位置上雙擊鼠標(biāo)左鍵,將彈出如圖2.7所示的元件輸入對話框。圖2.7元件輸入對話框假設(shè)QuartusII軟件安裝在G:\altera\61\quartus目錄下,則Libraries列表框中會自動顯示出元件庫目錄,然后可以單擊該目錄查找所需的元件,或者直接在左下角的Name文本框中輸入元件名稱;還可以單擊其右側(cè)的“…”按鈕查找路徑G:\altera\61\quartus\Libraries下的各種基本元件庫,找到所需的基本元件后雙擊將其打開,對應(yīng)的元件就顯示在右側(cè)的預(yù)覽窗口中,最后單擊Symbol對話框中的OK按鈕就可調(diào)出該元件,單擊鼠標(biāo)左鍵可以將該元件置入原理圖編輯窗口中。若需要多個同樣的元件,則可以選中Name文本框下面的Repeat-insertmode復(fù)選框,然后在編輯窗口中的不同位置單擊鼠標(biāo)左鍵即可;或者是在編輯窗口中復(fù)制該元件,再在其他空白區(qū)域粘貼即可。注意:在進行粘貼操作時不能再選中任何元件。在本示例中,參考半加器電路圖,分別調(diào)入元件xor,and2、IO引腳input和output,然后用鼠標(biāo)左鍵選中OrthogonalNodeTool,使用單擊拖動的方法連接各元件,如圖2.8所示。圖2.8半加器電路在QII中的實現(xiàn)注意:在連線時不能使線連接后出現(xiàn)“×”,否則表示連線過長,應(yīng)將其刪除以免影響電路功能。最后,在input和output的PINNAME上單擊選中,或者雙擊彈出如圖2.9所示的對話框,輸入各元件名:A、B、S和Co。然后可以將該文件命名為h_adder.bdf存儲在工作目錄full_adder下。圖2.9修改元件名稱對話框3)元件封裝本示例中,由于全加器中用到了多個半加器電路,為了簡化原理圖的設(shè)計工作,可以將半加器h_adder.bdf封裝成一個元件,這樣,其他的原理圖在設(shè)計時就可以將它作為一個元件進行調(diào)用,從而實現(xiàn)電路的復(fù)用。封裝過程如圖2.10所示。圖2.10創(chuàng)建元件符號首先將半加器原理圖文件h_adder.bdf打開,然后選擇File→Create/Update→CrateSymbolFilesforCurrentFile選項,就可以把當(dāng)前原理圖轉(zhuǎn)換為一個元件符號,并存儲在與h_adder.bdf相同的目錄下,名稱自動命名為h_adder.bsf,該元件即可被高層次設(shè)計調(diào)用。4)上層原理圖的設(shè)計與自定義元件的調(diào)用當(dāng)所有需要的底層自定義元件實現(xiàn)以后,可以進行上層電路的編輯。在新打開的原理圖編輯窗口中,雙擊鼠標(biāo)左鍵打開元件輸入對話框,如圖2.11所示。圖2.11調(diào)入自定義元件單擊Name文本框右側(cè)的“…”按鈕,選擇h_adder.bsf所在的工程目錄并雙擊該文件,則半加器元件符號就顯示在右側(cè)的預(yù)覽窗口中,然后再調(diào)入元件or2、IO管腳input和output,連接好全加器電路,并按照要求修改各管腳的名稱,如圖2.12所示。圖2.12全加器電路圖此外,當(dāng)需要引用電路圖內(nèi)部的信號時,可以對其內(nèi)部的連線和元件進行命名,如在全加器原理圖中的內(nèi)部信號S1、Co1和Co2。命名方法如圖2.12所示,在要命名的連線上單擊鼠標(biāo)右鍵,在快捷菜單中選擇Properties選項,在彈出的NodeProperties對話框中輸入連線的名稱,并且可以設(shè)置在設(shè)計文件中是否隱藏該名稱。將該文件命名為f_addr.bdf存儲在E:\full_adder工作目錄中。采用這種方法還可以設(shè)計更復(fù)雜的數(shù)字電路系統(tǒng),不斷地將下層設(shè)計生成在上層設(shè)計中可以調(diào)用的元件符號,直到完成最后的頂層設(shè)計,實現(xiàn)用戶預(yù)期的電路功能。5)同一設(shè)計層次原理圖的實現(xiàn)對于1位全加器電路這種簡單的設(shè)計,使用的電路模塊與連線都很少,在原理圖輸入窗口中能夠很容易地實現(xiàn)電路連接,也可以不采用上述分層設(shè)計方法,而在同一設(shè)計層次上實現(xiàn)整個全加器電路,如圖2.13所示。圖2.13全加器的另一種實現(xiàn)方法6)復(fù)雜電路在同一層次原理圖中設(shè)計實現(xiàn)在進行復(fù)雜數(shù)字電路系統(tǒng)的設(shè)計時,由于系統(tǒng)中的模塊比較多,而且對外的通信端口也比較多,模塊之間的相互連接比較復(fù)雜,往往用到數(shù)據(jù)總線、地址總線、控制總線等信號,再加上可見繪制區(qū)域有限,給原理圖輸入設(shè)計帶來很大困難,容易出現(xiàn)連線難于辨認和錯誤交叉等情況?,F(xiàn)在仍以全加器電路為例進行說明,圖2.14給出了它的另一種連接形式,與圖2.12所示的連接方式不同:一是這里使用了A[2..0]分別表示Ci、A、B三個輸入信號,并使用了OrthogonalBusTool將信號輸入全加器,能夠減少管腳和連線的數(shù)目;二是使用信號名代替兩個通信端口之間的連線,例如input管腳輸入信號A[1]、A[0]與半加器inst2的A、B端口相連,能夠簡化連線的繪制。使用這種方式能夠按照任意方式布局各功能模塊而不用考慮連線的復(fù)雜度,比如將輸入信號和輸出信號集中放置在一起,并按照功能對其進行適當(dāng)命名,有利于觀察該電路與外界的所有連接信號。圖2.14全加器電路的另一種連接方式2.1.3工程建立1)建立方法一QuartusII軟件以工程為單位管理文件,保證了設(shè)計文件的獨立性和完整性。第一種建立工程的方法如圖2.15所示。圖2.15工程建立方法(一)在保存原理圖文件時,若選中“保存為”對話框下方的Createnewprojectbasedonthisfile復(fù)選框,QuartusII軟件會彈出詢問是否創(chuàng)建新工程的對話框。因此,在保存一般的原理圖輸入設(shè)計文件時都將該項取消,或者選擇“否”,直接存儲設(shè)計文件。2)建立方法二:工程向?qū)Х绞匠S玫姆椒ㄊ谴蜷_QuartusII軟件,使用File→Newprojectwizard選項創(chuàng)建工程,可以為工程指定工作目錄、工程名稱和頂層設(shè)計實體的名稱,還可以指定在工程中使用的各種設(shè)計文件、用戶庫、目標(biāo)器件系列、具體器件和EDA工具等。在全加器設(shè)計工程中,以f_addr.bdf為頂層設(shè)計文件,工程建立過程如下:選擇File→Newprojectwizard選項,打開新建工程向?qū)υ捒驁D2.16工程建立方法(二)如圖2.16所示,單擊第一個文本框右側(cè)的“…”按鈕,選擇存放設(shè)計文件的工作目錄,雙擊頂層設(shè)計文件f_addr.bdf,則第一個文本框顯示該工程的工作目錄;第二個文本框為工程名稱,默認為頂層設(shè)計文件名稱f_addr,也可以使用其他名稱,如這里命名為fulladd;第三個文本框是當(dāng)前頂層設(shè)計實體名稱。注意:工程名稱可以與頂層設(shè)計實體的名稱相同,也可以不相同,但頂層實體名稱,應(yīng)該與工作目錄下的文件名稱完全一致,而且區(qū)分大小寫?!蚬こ讨刑砑釉O(shè)計文件如圖2.17所示,在AddFiles對話框中向工程添加文件的方法有兩種:一是單擊FileName文本框右側(cè)的“…”按鈕,從工程目錄中選擇所有相關(guān)的設(shè)計文件;二是直接單擊AddAll按鈕,將選定的工程目錄中的所有設(shè)計文件添加進來。圖2.17添加設(shè)計文件※選擇目標(biāo)器件系列和具體器件在進行設(shè)計之前,首先要清楚實驗設(shè)備所配置的FPGA芯片,然后才能進行正確下載和驗證。唐都科教儀器公司的CM3+計算機組成原理實驗設(shè)備配置的FPGA為Altera公司的Cyclone系列EP1C6Q240C8芯片,如圖2.18所示,首先在Family下拉列表框中選擇目標(biāo)器件,在此選擇Cyclone系列,并在Targetdevice選項區(qū)中選擇Specificdeviceselectedin’Availabledevices’list,之后在Availabledevices列表框中選擇EP1C6Q240C8。其中,EP1C6表示Cyclone系列以及該器件的規(guī)模,Q表示PQFP封裝,C8表示器件的速度級別。此外,若知道器件的封裝類型、管腳數(shù)和速度級別,還可以通過圖2.18右下方的Filters選項區(qū)進行選擇。圖2.18選擇目標(biāo)文件※EDA工具設(shè)置EDA工具設(shè)置窗口中有3個選項:一是EDAdesignentry/synthesistool,用于選擇設(shè)計輸入的類型和綜合工具;二是EDAsimulationtool,用于選擇仿真工具;三是EDAtiminganalysistool,用于選擇時序分析工具,這是除了QuartusII軟件自身提供的所有設(shè)計工具以外的工具,若都不選擇表示僅使用QuartusII自身的設(shè)計工具?!瓿稍O(shè)置最后一步顯示工程總結(jié),給出了工程所有的相關(guān)設(shè)置,如圖2.19所示,包括工程目錄、工程名稱、頂層實體名稱、添加的文件數(shù)、用戶庫的數(shù)量、目標(biāo)器件系列和具體器件、EDA工具等。單擊完成按鈕,該工程即被創(chuàng)建并彈出fulladd工程管理窗口,顯示該工程項目的層次結(jié)構(gòu)和各層次的實體名稱。圖2.19工程建立總結(jié)工程建立時會在工程目錄full_adder下生成若干文件,其中,.qpf文件為QuartusII工程文件;.qws文件為QuartusII界面配置文件;.qsf文件為QuartusII配置文件,它包含有關(guān)工程的所有信息,包括設(shè)計文件、波形文件、SignalTapII文件、內(nèi)存初始化文件等,還包含編譯器和仿真器等設(shè)置。此外,工程建立以后還可以選擇Assignments->Settings選項,使用Settings對話框的Files項進行設(shè)計文件的修改。2.1.4工程編譯在進行工程編譯之前,必須使用Settings對話框進行必要的設(shè)置,如圖2.20所示,Category列表中的Device項給出了在創(chuàng)建工程時選定的器件信息。若在創(chuàng)建工程時沒有選擇,則可以在這里進行設(shè)置。圖2.20工程設(shè)置對話框※選擇配置器件的工作方式由于Cyclone系列FPGA是采用SRAM工藝制作的芯片,在掉電后信息即丟失,必須外加配置器件在上電時對FPGA芯片進行編程,因此要對配置器件的相關(guān)設(shè)置進行選擇。在單擊Device&PinOptions按鈕進入選項對話框后,首先選擇General選項卡,Options列表中的Auto-restartconfigurationaftererror項表示對FPGA配置失敗后能自動重新配置,若關(guān)閉該項,在出現(xiàn)錯誤時需要從外部重新啟動配置過程。其他項以及Autousercode的含義可以在Description區(qū)域查看,并可以根據(jù)設(shè)計的實際情況進行選擇,如Enableuser-suppliedstart-upclock(CLKUSR)表示在初始化時指定設(shè)備的CLKUSR引腳使用用戶提供的時鐘?!x擇配置方式和配置器件將FPGA通過下載線與PC連接以后,可以采用JTAG方式直接對FPGA進行編程,其編程模式分為主動串行方式(ASMode)和被動串行方式(PSMode)。如圖2.21所示,在Configuration選項區(qū)中,根據(jù)目標(biāo)器件配置EPCS芯片型號,本例的編程器件選擇EPCS1,對EPCS1進行編程必須選擇主動串行方式,因此配置方式選擇為ActiveSerial,以實現(xiàn)對Cyclone系列器件的編程。圖2.21選擇配置方式和編程器件Generatecompressedbitstreams復(fù)選框的作用是生成用于EPSC的POF壓縮配置文件,在對Cyclone器件進行編程時,器件能夠自動識別并進行實時解壓。由于JTAG方式是串行傳輸配置信息,壓縮以后有利于加快信息的傳送速度,在一定程度上能夠減小對目標(biāo)器件的編程時間。※選擇可編程文件在ProgrammingFiles選項卡可以選擇產(chǎn)生的可編程文件,對于具有多種配置方式的器件系列,如果選擇了被動配置方式,QuartusII軟件會始終產(chǎn)生一個后綴為.sof的SRAM文件,并且依賴于所選擇的配置器件,還產(chǎn)生一個后綴為.psof的部分SRAM文件或者后綴為.pof的編程文件。注意:在這里選擇產(chǎn)生的文件都是由外部控制器用來對FPGA芯片進行編程所使用的配置文件。如圖2.22所示,選中RawBinaryFile(.rbf)復(fù)選框表示在生成編程文件的同時,還可以產(chǎn)生一個包含配置數(shù)據(jù)的原始二進制文件。圖2.22選擇不同格式的編程文件※設(shè)置閑置引腳狀態(tài)在UnusedPins選項卡中可以設(shè)置設(shè)備上所有閑置引腳的狀態(tài),圖2.23給出了閑置引腳的三種狀態(tài):呈高阻態(tài)的輸入狀態(tài)、呈低電平的輸出狀態(tài)或者輸出不確定狀態(tài)。推薦設(shè)置為高阻輸入狀態(tài)。圖2.23設(shè)置閑置引腳狀態(tài)※其它設(shè)置在Dual-PurposePins選項卡中設(shè)置具有兩重作用的引腳在配制完以后的使用方法,即在配制過程中這些引腳用于對器件的編程,配置完成后可以設(shè)置用于其它功能,如數(shù)據(jù)傳送等。注意:每個引腳的默認設(shè)置與當(dāng)前選擇的配置方式有關(guān)。Voltage選項卡用于設(shè)置目標(biāo)器件的引腳使用的IO電壓標(biāo)準(zhǔn):LVTTL、LVCOMS、2.5V、1.8V、或者1.5V。PinPlacement選項卡用于調(diào)整輸入引腳的LVTTL/LVCOMS電壓和重置默認值的選項設(shè)置。注意:重置往往會導(dǎo)致更高的泄漏電流,從而導(dǎo)致設(shè)計不能達到預(yù)期功能。ErrorDetectionCRC選項卡用于設(shè)置是否使用CRC錯誤檢測及其檢測速度。※編譯過程設(shè)置圖2.24給出了編譯過程選項的設(shè)置。為了使每一次重復(fù)編譯時的速度更快,可以選中UseSmartCompilation復(fù)選框。注意:某些選項的設(shè)置依賴于當(dāng)前使用的器件系列。圖2.24編譯過程設(shè)置※編譯QuartusII軟件的編譯包括對設(shè)計輸入的多項處理操作,包括檢錯、數(shù)據(jù)網(wǎng)表提取、邏輯綜合、適配(結(jié)構(gòu)綜合)、輸出結(jié)果的配置文件以及基于目標(biāo)器件的時序分析。編譯器首先檢查設(shè)計文件中可能出現(xiàn)的錯誤并給出錯誤提示,若沒有錯誤則生成一個結(jié)構(gòu)化的網(wǎng)表文件,最終將設(shè)計適配到目標(biāo)器件中,在此過程中同時產(chǎn)生功能和時序信息文件、器件編程文件等不同用途的文件。在設(shè)置完編譯前的各種選項以后,選擇Processing菜單下的StartCompilation選項可以啟動全程編譯,或者使用Tools菜單下的CompilerTool工具進行編譯操作。若當(dāng)前的工程沒有設(shè)置頂層文件,可以選擇Project菜單下的SetasTop-LevelEntity選項設(shè)置頂層文件,之后再進行編譯。編譯完成后可以查看編譯結(jié)構(gòu),如查看編譯報告、了解工程的時序報告以及硬件資源的利用情況等,以便對設(shè)計進行分析和優(yōu)化。如圖2.25所示,在編譯過程中,左下方的狀態(tài)窗口顯示全程編譯中各種操作的執(zhí)行進度,包括數(shù)據(jù)網(wǎng)表建立、邏輯綜合、適配、配置文件裝配和時序分析等,下方的Processing區(qū)域動態(tài)顯示編譯信息。若設(shè)計文件存在錯誤,則在編譯過程中會在Processing區(qū)域顯示出錯誤信息。與其他高級語言編譯器一樣,雙擊該錯誤信息行可以彈出原理圖輸入文件或源程序,并將錯誤使用高亮方式進行標(biāo)注。排除一個錯誤后即可編譯一遍,因為多條錯誤信息很可能是由設(shè)計文件中的一個錯誤引起的,直到所有錯誤都被排除。圖2.25編譯報告若設(shè)計文件中不存在錯誤則能夠編譯成功,圖2.26顯示了fulladd工程的層次結(jié)構(gòu)和各結(jié)構(gòu)模塊所使用的邏輯單元數(shù)、引腳數(shù)、內(nèi)存位數(shù)、虛擬管腳數(shù)等信息,這些信息還可以從圖2.25所示的編譯總結(jié)(FlowSummary)中查看。圖2.26資源使用圖2.27顯示了編譯報告的選擇菜單,單擊FlowSummary項可以顯示右側(cè)所示的編譯總結(jié)。由此可知,EP1C6Q240C8器件總共包含5980個邏輯宏單元、185個引腳、92160個內(nèi)部RAM位和2個PLLs等,其中顯示當(dāng)前工程使用了2個邏輯宏單元和5個引腳等,并給出了所占總資源的百分比。通過Analysis&Synthesis、Fitter、Assembler、TimingAnalyzer項可以查看分析和綜合步驟、適配、配置文件裝配以及時序分析得到的被編譯工程的綜合報告、硬件特性適配報告、配置文件裝配報告和時序特性報告,設(shè)計者可根據(jù)綜合報告對設(shè)計進行修改和優(yōu)化。從編譯報告??梢缘弥恍┏S秒娐返挠布Y源消耗、時序信息等情況,有利于在工程設(shè)計中預(yù)估用戶功能所需芯片的大小和特性。圖2.27選擇菜單編譯操作所必須包含的文件為工程文件.qpf、配置文件.qsf和所有設(shè)計文件.bdf等,編譯過程中會生成中間文件.eqn文件和db目錄下的所有文件,正確編譯完成后會生成.rpt報告文件、.summary總結(jié)文件和編程文件.sof、.pof等。2.1.5工程仿真與C++等高級語言的編譯過程類似,編譯成功后說明源程序沒有語法錯誤,而能否實現(xiàn)預(yù)期功能還需要進一步調(diào)試,檢查是否存在邏輯錯誤。在QuartusII軟件中工程編譯成功后,必須對其進行功能和時序的仿真測試,通過仿真波形可以確定設(shè)計結(jié)果是否滿足用戶設(shè)計要求。功能仿真:是在沒有布線和適配之前,使用源設(shè)計文件綜合后的文件進行仿真。它忽略信號在邏輯器件和傳輸線上的延時,并對應(yīng)各種可能的輸入信號仿真得到工程設(shè)計的輸出信號,以檢驗輸出信號是否滿足預(yù)期要求。時序仿真:是將設(shè)計綜合之后,使用經(jīng)過適配器映射到具體芯片后得到的文件進行仿真。它將最基本的門級延時考慮在內(nèi),模擬設(shè)計在芯片內(nèi)的實現(xiàn)過程,經(jīng)過時序仿真后的設(shè)計基本上與實際電路是一致的。在EDA設(shè)計時通常有兩種在輸入端添加激勵信號的方法:一種是使用波形文件;另一種是使用激勵文件。在QuartusII軟件中使用矢量波形文件方式的仿真流程包括編輯波形文件、仿真器參數(shù)設(shè)置、仿真及結(jié)果分析等過程?!庉嫴ㄐ挝募赒uartusII軟件中選擇File->New選項,在彈出的New對話框中選擇OtherFiles選項卡中的VectorWaveformFile項,雙擊該項或者單擊OK按鈕可彈出空白的波形編輯器,如圖2.28所示,在其中可以根據(jù)需要對編輯窗口的大小進行調(diào)整,單擊左側(cè)的FullScreen按鈕可以將該窗口全屏顯示。圖2.28波形編輯窗口在仿真過程中將整個設(shè)計作為一個模塊對待,在其輸入端口上添加適當(dāng)?shù)妮斎爰钚盘?,通過觀察輸出端口的仿真波形來判斷設(shè)計的功能是否滿足預(yù)期要求,因此需要將fulladd工程中的端口信號選入波形編輯器中。在工程被編譯成功以后,選擇View->UtilityWindows->NodeFinder項,彈出如圖2.29所示的對話框,單擊Filter下拉列表框,根據(jù)需要選擇所列信號,在此選擇Pins:all,還可以使用Customize按鈕進行自定義設(shè)置;在Lookin下拉列表框中可以選擇端口所處的模塊名稱,一般默認為頂層實體;然后單擊List按鈕,即可在NodesFound區(qū)域列出相應(yīng)的端口信號,若此時無法列出相關(guān)的端口信號,可以重新編譯一次當(dāng)前工程,然后重復(fù)上述操作即可。圖2.29端口添加窗口接下來,將所需輸入端口信號A、B、Ci以及輸出端口信號S、Co分別使用鼠標(biāo)左鍵拖動到波形編輯器,或者使用“Shift+鼠標(biāo)左鍵”全部選中,或者使用“Ctrl+鼠標(biāo)左鍵”選擇所需信號后一起拖動到波形編輯器中,然后關(guān)閉NodeFinder對話框即可。注意:在NodeFinder對話框中的任何位置單擊右鍵都可以將其設(shè)置為浮動窗口。新建波形文件的仿真時間一般默認為1.0us,可以根據(jù)工程設(shè)計的實際需要對其進行設(shè)置,一般可將其設(shè)置在數(shù)十到百微秒時間范圍內(nèi),方法是選擇Edit->EndTime選項,在彈出窗口的Time欄中進行時間值及其單位單位的設(shè)置,比如將整個仿真時間長度設(shè)置為100us,單擊OK按鈕結(jié)束設(shè)置。為了便于設(shè)置和觀察波形,可以在波形編輯窗口中單擊鼠標(biāo)右鍵,選擇Zoomin/Zoomout選項,或者使用左側(cè)的放大縮小按鈕對整個仿真時間域的顯示進行設(shè)置,單擊鼠標(biāo)左鍵擴大其顯示精度,單擊鼠標(biāo)右鍵縮小顯示精度,可以根據(jù)設(shè)計的需求自行調(diào)整。完成上述操作以后就可以編輯輸入波形,在設(shè)置某個信號的值時,可以單擊信號名使該行呈高亮顯示,然后單擊ForcingHigh或ForcingLow按鈕,如圖2.30所示,首先將Ci信號置為0,使用鼠標(biāo)左鍵選擇為1的區(qū)域使其高亮,然后單擊ForcingHigh按鈕即可,按照這種方法可以對所有的輸入端口信號賦值。注意:輸入信號的組合應(yīng)該覆蓋所有的可能情況,這樣才能充分檢測設(shè)計的完整功能。對于周期性變化的輸入信號可以使用時鐘設(shè)置(OverwriteClock)按鈕進行賦值,在彈出的Clock對話框中,可以設(shè)置該信號的周期Period、占空比Dutycycle(%)和相位Phase的值,輸入信號A的設(shè)置,如圖2.30中的Clock對話框所示。設(shè)置好的激勵波形如圖2.30所示,其中,Co和S信號為輸出信號,此時其值處于未知狀態(tài)。圖2.30輸入波形圖雙擊端口信號或單擊鼠標(biāo)右鍵選擇Properties選項,可以打開該信號的NodeProperties對話框,如圖2.31所示,其中Name文本框用于設(shè)置或修改信號名稱,Type下拉列表框用于將端口類型設(shè)置為BIDIR、COMB、INPUT、OUTPUT、MEMORY、REG等,Radix下拉列表框用于設(shè)置顯示數(shù)據(jù)的基值,包括二進制、八進制、十六進制、有符號何無符號十進制等,BusWidth數(shù)值框用于設(shè)置總線寬度。然后可以按照上面的方法對每個信號進行賦值。注意:當(dāng)前工程fulladd中的S為單個信號,此處僅僅用于說明總線數(shù)據(jù)格式的設(shè)置。圖2.31總線數(shù)據(jù)格式設(shè)置※功能仿真及結(jié)果分析選擇Assignment->Setting選項打開Settings對話框,如圖2.32所示,然后選擇Category列表中的Simulator項,右側(cè)顯示仿真器參數(shù)的總體設(shè)置情況。在Simulationmode下拉列表框中選擇Functional選項表示進行功能仿真,單擊Simulationinput文本框右側(cè)的“…”按鈕選擇仿真激勵文件f_adder.vwf;Simulationperiod表示仿真周期,選中Runsimulationuntilallvectorstimuliareused單選按鈕進行全程仿真,或者選中Endsimulationat單選按鈕并指定仿真時間;Simulationcoveragereporting復(fù)選框表示仿真完成后報告仿真所覆蓋的范圍。由于功能仿真不考慮信號傳輸延時信息,因此毛刺檢測Glitchdetection復(fù)選框不可用。圖2.32功能仿真參數(shù)設(shè)置編輯完輸入波形并設(shè)置相應(yīng)的仿真器參數(shù)后,首先選擇Processing->GenerateFunctionalSimulationNetlist選項產(chǎn)生用于功能仿真的網(wǎng)表文件,然后使用Startsimulation啟動全程仿真,或者使用Tools菜單下的SimulationTool工具進行仿真操作。若仿真過程中出現(xiàn)問題,則會在下方的Processing區(qū)域顯示,可以根據(jù)提示信息進行修改。否則,仿真結(jié)束后會自動出現(xiàn)Simulationwassuccessful成功信息。功能仿真結(jié)構(gòu)波形如圖2.33所示,在該窗口中可以使用放大/縮小按鈕將波形調(diào)整到適當(dāng)尺寸以便于觀察;根據(jù)全加器的邏輯表達式或者真值表驗證結(jié)果波形是否正確,從而判斷該電路是否實現(xiàn)了全加器的功能。此外,仿真報告中的Settings給出了仿真器的設(shè)置參數(shù)信息,Summary和Messages分別顯示了仿真總結(jié)和仿真過程中產(chǎn)生的信息。圖2.33功能仿真結(jié)果波形※時序仿真及結(jié)果分析打開Settings對話框,然后選擇Category列表中的Simulator項,如圖2.34所示,在Simulatormode下拉列表框中選擇Timing選項表示進行時序仿真。由于時序仿真考慮了信號在邏輯器件和傳輸線上的延時信息,此處毛刺檢測Glitchdetection復(fù)選框可用,設(shè)其檢測寬度為1ns。其他選項設(shè)置與功能仿真相同。圖2.34時序仿真參數(shù)設(shè)置與功能仿真不同,時序仿真使用的是編譯成功后映射到具體芯片上的文件,時序仿真操作正確完成以后,結(jié)果波形如圖2.35所示。由于FPGA芯片內(nèi)部結(jié)構(gòu)及其工作條件等因素,所設(shè)計的電路一般都會出現(xiàn)競爭冒險(毛刺)現(xiàn)象,對比觀察兩種仿真結(jié)果波形圖,在時序仿真結(jié)果波形圖中可以看到一些尖峰信號,這些毛刺在一定程度上會影響電路工作的穩(wěn)定性。數(shù)字系統(tǒng)中的毛刺是必然的,毛刺產(chǎn)生的原因和消除方法比較復(fù)雜,有興趣可以查閱其它資料。圖2.35時序仿真波形圖2.1.6引腳綁定和下載當(dāng)設(shè)計的仿真測試結(jié)果和預(yù)期結(jié)果一致后,可以將設(shè)計的輸入輸出信號綁定到FPGA芯片的引腳上,并將綁定引腳后的工程重新編譯一次,從而把引腳信息編譯到配置文件中,然后,使用AS或JTAG模式將配置文件下載到芯片內(nèi)進行實際硬件測試?!_綁定要進行引腳的綁定工作,必須先弄清楚目標(biāo)器件的引腳信息,并確定工程所用引腳的編號。首先打開進行引腳綁定的工程,然后選擇Assignment->Pins選項打開引腳綁定編輯窗口,如圖2.36所示。雙擊NodeName欄的<new>后,在出現(xiàn)的下拉列表框中選擇該工程要綁定的信號名,雙擊對應(yīng)的Location欄的<new>,并在下拉列表框中選擇對應(yīng)該信號的芯片引腳編號,這樣就將NodeName欄的信號與Location欄的引腳綁定在一起,以這種方式可將所有的端口綁定到對應(yīng)的引腳上。此外,還給出了該引腳所在的I/OBank,并可以設(shè)置I/OStandard的電壓值;雙擊Reserved欄可以設(shè)置某些引腳的電器特性。注意:灰色顯示的欄目是不能修改的。設(shè)置完所有的引腳綁定信息并存儲后,必須重新編譯一次才能將該信息編譯到配置文件中。圖2.36引腳綁定窗口※下載編程為了將編譯產(chǎn)生的配置文件下載到目標(biāo)芯片中進行測試,首先要將實驗箱JTAG口和計算機USB口通過數(shù)據(jù)線進行連接,并保證PC機上已安裝好USB-Blaster設(shè)備的驅(qū)動??筛鶕?jù)實際情況選擇相應(yīng)的編程模式。接通電源后,在Tool菜單中選擇Programmer選項,彈出如圖2.37所示的編程窗口。單擊左上角的HardwareSetup按鈕進行下載接口方式設(shè)置,在彈出的對話框中單擊Currentlyselectedhardware右側(cè)下拉按鈕,選擇接口類型為USB-Blaster,端口為USB-0,將其設(shè)置為當(dāng)前接口設(shè)備,關(guān)閉該對話框后,HardwareSetup欄會顯示該設(shè)置。圖2.37編程窗口在下載編程前,根據(jù)下載線的連接情況選擇JTAG、ActiveSerial、PassiveSerial或者In-Socket編程模式,如圖2.38所示。如圖,選擇JTAG編程模式(此時下載線應(yīng)該連接到芯片的JTAG端口)后,編程器一般會自動檢測編程設(shè)備、編程文件、校驗以及用戶代碼等信息,JTAG模式下的編程文件后綴名為.sof。否則,可用單擊AutoDetect按鈕執(zhí)行自動檢測,或者單擊AddFile按鈕手動選擇編程文件并調(diào)入。圖2.38JTAG編程模式如圖2.39所示,選中編程文件后的Program/Configure項,然后單擊Start按鈕即可開始芯片的編程,并在Progress欄顯示編程進度,同時還在QuartusII軟件界面的輸出窗口顯示管腳綁定、編程開始和結(jié)束時間、設(shè)備索引號、JTAG代碼以及編程結(jié)果指示信息等,如圖2.40所示。編程成功以后,在QuartusII軟件中輸入的設(shè)計就在芯片內(nèi)實現(xiàn)運行,連接FPGA芯片的外圍實驗電路后,即可實現(xiàn)用戶預(yù)定的目標(biāo)功能。圖2.39編程操作使用JTAG模式能夠?qū)崿F(xiàn)對FPGA芯片的直接編程,由于Cyclone等系列的FPGA芯片是基于SRAM工藝制造的,在斷電后芯片內(nèi)的編程信息即丟失,上電后必須重新編程加載設(shè)計。為了使FPGA在上電后保持原有編程信息,并能正常工作,可以使用AS編程模式將編程文件寫入專用的配置芯片EPCSx中。EPCSx采用Flash存儲結(jié)構(gòu),編程周期為10萬次,編程接口為USB-Blaster。圖2.40JTAG模式編程信息如圖2.41所示,首先在Mode下拉列表框中選擇ActiveSerialProgramming編程模式(此時下載線應(yīng)連接到芯片的AS端口),然后調(diào)入編程文件,AS模式下的編程文件后綴名為.pof。選中編程文件后的Program/Configure、Verify等項,單擊左側(cè)的Start按鈕即可開始芯片的編程,并在Progress欄顯示編程進度。同時還在QuartusII軟件界面的輸出窗口顯示編程開始和結(jié)束時間、ASP配置設(shè)備信息、執(zhí)行校驗信息以及編程結(jié)果指示信息等,如圖2.42所示。圖2.41AS編程模式成功執(zhí)行編程操作后,編程文件即被正確寫入EPCS1器件,然后FPGA芯片將自動被EPCS1器件配置并進入運行狀態(tài),實現(xiàn)用戶預(yù)定的功能目標(biāo)。以后每次使用時,上電后FPGA芯片即被EPCS1器件自動配置,進入正常工作狀態(tài)。圖2.42AS模式編程信息2.2基于VerilogHDL的設(shè)計流程全加器電路的VerilogHDL設(shè)計流程如下:2.2.1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 費用反還協(xié)議書
- 救援隊訓(xùn)練免責(zé)協(xié)議書
- 約架免責(zé)協(xié)議書
- 小工程勞務(wù)用工協(xié)議書
- 肉牛寄養(yǎng)協(xié)議書
- 藝校入職協(xié)議書
- 電線承包協(xié)議書
- 父母和女婿復(fù)婚協(xié)議書
- 貿(mào)易貨物協(xié)議書
- 資產(chǎn)贈予協(xié)議書
- 麗聲北極星分級繪本第二級下-
- 變電站數(shù)字孿生框架構(gòu)建與關(guān)鍵技術(shù)研究
- 2025-2030年中國報廢汽車回收行業(yè)市場十三五發(fā)展規(guī)劃及投資戰(zhàn)略研究報告新版
- DIP支付下的病案首頁填寫
- 兩癌防治知識培訓(xùn)
- 《思想政治教育方法論》考研(第3版)鄭永廷配套考試題庫及答案【含名校真題、典型題】
- 肩袖損傷的治療與護理
- 【MOOC】創(chuàng)業(yè)基礎(chǔ)-浙江科技學(xué)院 中國大學(xué)慕課MOOC答案
- 物理-2025年中考終極押題猜想(廣州專用)(原卷版)
- 江蘇省蘇州市(2024年-2025年小學(xué)五年級語文)統(tǒng)編版期末考試(下學(xué)期)試卷及答案
- 二次元行業(yè)的發(fā)展環(huán)境分析
評論
0/150
提交評論