2012-學(xué)生用用SOPC實(shí)驗(yàn)指導(dǎo)書(EP3C16Q240C8)_第1頁
2012-學(xué)生用用SOPC實(shí)驗(yàn)指導(dǎo)書(EP3C16Q240C8)_第2頁
2012-學(xué)生用用SOPC實(shí)驗(yàn)指導(dǎo)書(EP3C16Q240C8)_第3頁
2012-學(xué)生用用SOPC實(shí)驗(yàn)指導(dǎo)書(EP3C16Q240C8)_第4頁
2012-學(xué)生用用SOPC實(shí)驗(yàn)指導(dǎo)書(EP3C16Q240C8)_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

濟(jì)南大學(xué)SOPC綜合實(shí)驗(yàn)系統(tǒng)實(shí)驗(yàn)指導(dǎo)書進(jìn)位Co加數(shù)b三、實(shí)驗(yàn)步驟1、創(chuàng)建工程運(yùn)行QuartusII軟件,如下圖所示:建立工程,F(xiàn)ileNewProjectWizad,既彈出“工程設(shè)置”對話框,如圖所示單擊此對話框最上一欄右側(cè)的“...”按鈕選擇工作目錄,在D盤中建一個工程文件夾,取名為test。單擊“打開”按鈕,在第二行和第三行中寫工程名為“half_adder”。按Next按鈕,出現(xiàn)添加工程文件的對話框,如下圖所示:這里無需添加文件,我們跳過此步,直接按next進(jìn)行下一步,如下圖所示,選擇FPGA/CPLD器件的型號,本試驗(yàn)箱選用Altera公司的CycloneIII系列FPGA芯片EP3C16Q240C在Family下拉框中,我們選擇CycloneIII系列的FPGA,選擇此系列的具體芯片EP3C16Q240C8。執(zhí)行next出現(xiàn)選擇其它EDA工具對話框,我們用QuartusII的集成環(huán)境進(jìn)行開發(fā),因此這里不作任何改動,連續(xù)按next進(jìn)入工程的信息總概對話框,2、建立頂層原理圖(1)執(zhí)行FileNew,彈出新建文件對話框,如下圖所示:選擇“BlockDiagramSchematicFile”,按OK即建立一個空的頂層圖,缺省名為“Block1.bdf”,我們把它另存為(FileSaveas),接受默認(rèn)的文件名,并將“Createnewprojectbasedonthisfile”選項(xiàng)選上,以使該文件添加到工程中去。(2)添加邏輯組件(Symbol)在原理圖左邊選擇SymbolTools或在圖的空白處雙擊,彈出添加組件的對話框,如下圖所示。在libraries里尋找所需要的邏輯組件,如果知道邏輯組件的名稱的話,也可以直接在Name一欄敲入名字,右邊的預(yù)覽圖即可顯示組件的外觀,按OK后鼠標(biāo)旁邊即拖著一個組件符號,在圖紙上點(diǎn)擊左鍵,組件即安放在圖紙上。在圖中上分別放置異或門(xor),與門(and2),輸入(input),輸出(output)。(3)連線。將鼠標(biāo)移到symbol連線端口上,鼠標(biāo)變成圖示形狀,按下左鍵拖動鼠標(biāo)到另一個symbol的連線端。雙擊輸入輸出符號名字“pin_name”,將它們修改為a,b,s,co,如下圖所示:(4)設(shè)置。在建立工程時我們選定的芯片型號,也可以在這一步設(shè)定,在菜單AssignmentsDevice,如果參數(shù)已設(shè)置好,這里一般可以不做任何修改。(5)編譯。按主工具欄上的全編譯按鈕,即開始編譯,Message窗口會顯示一些編譯信息,最后編譯成功彈出提示,如圖所示。其中的warings可以忽略。仿真對工程編譯通過后,應(yīng)該對其功能和時序性質(zhì)進(jìn)行仿真測試,以了解設(shè)計(jì)結(jié)果是否滿足原設(shè)計(jì)要求。具體步驟如下:(1)功能仿真新建波形編輯器。選擇菜單File中的New項(xiàng),在New窗口中選擇VectorWaveformFile項(xiàng),如下圖所示:單擊OK按鈕,即出現(xiàn)空白的波形編輯器。設(shè)置仿真時間區(qū)域。對于時序仿真來說,將仿真時間軸設(shè)置在一個合理的時間區(qū)域上十分重要。通常設(shè)置的時間范圍在數(shù)十微秒間。在Edit菜單中選擇EndTime項(xiàng),在彈出的窗口中的Time欄處輸入50,單位選擇“us”,整個仿真域的時間即設(shè)定為50us,單擊OK按鈕,結(jié)束設(shè)置。(2)波形文件存盤。選擇File中的SaveAs項(xiàng),將以默認(rèn)名的波形文件存入文件夾中。(3)將工程的端口信號節(jié)點(diǎn)加入到波形編輯器中。首先選擇Edit菜單中的Insert項(xiàng)的InsertNodeorbus..選項(xiàng)(或在所建立波形文件左邊空白處雙擊鼠標(biāo)左鍵再選NodesFound)。在Filter框中選擇Pins:all,然后單擊List按鈕。于是在下方的NodesFound窗口中出現(xiàn)設(shè)計(jì)中的工程的所有端口引腳名。用鼠標(biāo)將重要的端口節(jié)點(diǎn)a,b,s,co分別加到右邊波形編輯窗口,結(jié)束后關(guān)閉NodesFound窗口,如下圖所示:(4)編輯輸入波形(輸入激勵信號)。為輸入信號a、b添加激勵信號,如下圖所示。半編譯成功后進(jìn)行功能仿真功能仿真:選擇processingsimulatortool,出現(xiàn)以下對話框:在simulationmode選項(xiàng)里,選擇functional,點(diǎn)擊generatefunctionalsimulationnetist。然后點(diǎn)擊start,進(jìn)行功能仿真,成功后點(diǎn)擊Report查看結(jié)果,如下圖所示:分配管腳選擇AssignmentsPinsPlanner打開如上圖所示,并按圖中情況分配管腳,按照上圖所示分配管腳,并保存。如下圖所示:5、編程下載管腳分配完畢后,啟動全編譯,生成harf_adder.sof文件,然后下載到FPGA。首先點(diǎn)擊”下載”按鈕,檢測安裝下載電纜(單擊HardwareSetup)彈出對話框如圖所示,選擇ByteblasterII下載電纜,關(guān)閉該對話框,(如果已安裝就無需再檢測下載電纜)載入并選中下載文件,點(diǎn)擊Start開始下載。6、連線SW1加數(shù)0110SW2加數(shù)0011LED1和亮滅亮滅LED2進(jìn)位亮亮滅亮按照分配管腳的順序使用排線將PIN-182,PIN-184分別接入撥碼開關(guān)SW1和SW2:PIN-181,PIN183分別接LED1和LED2。然后手動撥動開關(guān)就可以觀察半加器相加的和和進(jìn)位的情況。如下表所示附:用VHDL語言完成半加器的設(shè)計(jì)libraryieee;useieee.std_logic_1164.all;entityhalf_adderisport(a,b:instd_logic;sum,cout:outstd_logic);endhalf_adder;architecturehalf1ofhalf_adderissignalc,d:std_logic;beginc<=aorb;d<=anandb;cout<=notd;sum<=candd;endhalf1;實(shí)驗(yàn)二使用VHDL設(shè)計(jì)組合邏輯全加器一、實(shí)驗(yàn)?zāi)康?、使用VHDL語言設(shè)計(jì)并實(shí)現(xiàn)一個一位全加器。2、初步了解使用VHDL進(jìn)行可編程邏輯器件設(shè)計(jì)的全過程。3、熟識quartusII軟件基本功能的使用。二、實(shí)驗(yàn)原理加法器一般就是全加器,它實(shí)現(xiàn)多位帶進(jìn)位加法。一位全加器有三個輸入、兩個輸出。真值表:根據(jù)真值表寫出邏輯表達(dá)式:實(shí)驗(yàn)步驟按實(shí)驗(yàn)一建立工程命名為fulladder,并新建VHDL文件,F(xiàn)ilenewVHDLFile。2、輸入?yún)⒖汲绦颍簂ibraryieee;useieee.std_logic_1164.all;entityfulladder_VHDLisport(a,b,cin:instd_logic;sum,cout:outstd_logic);endfulladder_VHDL;architecturefull1offulladder_VHDLisbeginsum<=(axorb)xorcin;cout<=(aandb)or(cinanda)or(cinandb);endfull1;3、保存VHDL注意在程序存盤時其文件名稱必須與實(shí)體名相同,保存為fulladder_VHDL.vhdl4、生成頂層原理圖選擇FileCreat/UpdateCreatSymbolFilesforCurrentFiles生成頂層符號文件(如下圖所示,然后新建一個BlockDiagramm/SchematicFile文件,在空白處雙擊在對話框中添加該Symbol文件(如圖3.2.45、添加輸入、輸出管腳并重命名在BlockDiagramm/SchematicFile文件的空白處雙擊,添加輸入輸出管腳,連接完成再重命名后入下圖所示:6、保存文件在保存文件時,這里BlockDiagramm/SchematicFile文件是該工程的最頂層文件,保存名應(yīng)該與工程名相同。VHDL文件的存儲名必須與其實(shí)體部分名稱相同,當(dāng)然VHDL文件也可以作為頂層文件(這時其實(shí)體名稱、存儲名稱、都應(yīng)該與工程名相同),但是BlockDiagramm/SchematicFile文件表現(xiàn)出來更直觀,所以本實(shí)驗(yàn)用VHDL文件生成后Symbl符號后再使用BlockDiagramm/SchematicFile文件作為最頂層文件。7、建立仿真文件點(diǎn)擊主工具欄上的圖標(biāo)進(jìn)行半編譯,完成后新建一個波形仿真文件FileNewVerification/DebuggingFilesVectorVaveformFile.,然后添加仿真管腳如下圖所示。在波形文件左邊單擊右鍵如,調(diào)出對話框選擇NodeFinds,如下圖所示。設(shè)置如圖,點(diǎn)擊List調(diào)出所有管腳,后使用添加到仿真文件中。點(diǎn)擊OK后返回到波形文件。8、添加仿真信號添加仿真信號如下圖所示,首先選中要添加信號的管腳,再利用左邊的工具欄的或?yàn)槠涮砑有盘?。然后保存仿真文件,命名fulladder.vwf,然后編譯(半編譯或全編譯)。9、波形仿真編譯完成后,選擇ProcessingSimulatorTool調(diào)出仿真對話框如下圖所示:在仿真模式中選擇”Functional”然后點(diǎn)擊”GenerateFunctionalSimulationNetlist”生成功能仿真的Netlist,完成后點(diǎn)擊”Start”按鈕開始仿真,如下圖所示。然后點(diǎn)擊”Report”來查看仿真結(jié)果,如圖所示。把仿真結(jié)果與真值表相比較觀察是否正確。10、分配管腳選擇AssignmentsPinsPlanner打開并分配管腳,按照圖所示分配管腳,分配完畢,保存,然后返回到頂層原理圖文件如下圖所示。 11、保存頂層原理圖文件后進(jìn)行全編譯。12、下載。全編譯完成后會生成一個fulladder.pof文件,將此文件下載到FPGA中。首先點(diǎn)擊主工具欄的圖標(biāo)或選擇ToolsProgrammer來打開下載對話框。如果在左上腳顯示有”NoHardware”則需要安裝下載電纜,點(diǎn)擊”HardwareSetup”來安裝。安裝后返回下載對話框后,在Progranmmer/configure下”打勾”選中下載文件,然后點(diǎn)擊”Start”按鈕開始下載。13、下載完成14、連線并觀察記錄實(shí)驗(yàn)結(jié)果按照管腳分配順序,把Pin69、Pin70、Pin71分別連接撥碼開關(guān)SW1、SW2、SW3;而Pin99、Pin100分別連接LED1、LED2。完成后得出以下現(xiàn)象。開關(guān)量輸入指示輸出SW1SW2SW3LED1LED2000亮0亮0100滅1亮0010滅1亮0110亮0滅1001滅1亮0101亮0滅1011亮0滅1111滅1滅1實(shí)驗(yàn)三帶進(jìn)位輸入的8位加法器一、實(shí)驗(yàn)?zāi)康脑O(shè)計(jì)并實(shí)現(xiàn)一個8位加法器。二、實(shí)驗(yàn)原理在下圖中,“進(jìn)位入”Ci-1是指低位的進(jìn)位輸出,“進(jìn)位出”Ci即是本位的進(jìn)位輸出。原理圖如下:三、實(shí)驗(yàn)步驟在本實(shí)驗(yàn)中直接調(diào)用一位全加器模塊,程序如下(程序中設(shè)變量n,設(shè)計(jì)的是n位加法器,改變n的值,從而得到多位加法器,本實(shí)驗(yàn)中n賦值為8):libraryieee;useieee.std_logic_1164.all;entityfulladder_VHDLisport(a,b,cin:instd_logic;sum,cout:outstd_logic);endfulladder_VHDL;architecturefull1offulladder_VHDLisbeginsum<=(axorb)xorcin;cout<=(aandb)or(cinanda)or(cinandb);endfull1;1、建立工程命名為fulladder8,然后新建一個VHDL文件輸入全加器代碼(同實(shí)驗(yàn)二):保存文件,命名為fulladder_VHDL.vhdl(與實(shí)體部分名相同)。2、再新建一個VHDL文件,輸入以下代碼,來調(diào)用全加器程序,保存為addern.vhdl(與實(shí)體部分名相同)。libraryieee;useieee.std_logic_1164.all;entityaddernisgeneric(n:integer:=8);本實(shí)驗(yàn)賦值8位加法器port(a,b:instd_logic_vector(ndownto1);cin:instd_logic;sum:outstd_logic_vector(ndownto1);cout:outstd_logic);endaddern;architectureaza2ofadderniscomponentfulladder_VHDL聲明要調(diào)用的1位全加器port(a,b,cin:instd_logic;sum,cout:outstd_logic);endcomponentfulladder_VHDL;signalcarry:std_logic_vector(0ton);begincarry(0)<=cin;cout<=carry(n);gen:foriin1tongenerateadd:fulladder_VHDL開始調(diào)用全加器portmap(a=>a(i),b=>b(i),cin=>carry(i-1),sum=>sum(i),cout=>carry(i));endgenerategen;endaza2;3、把a(bǔ)ddern.vhdl文件生成原理圖文件打開addern.vhdl文件,選擇FileCreat/UpdateCreatSymbolFilesforCurrentFiles生成頂層符號文件,然后新建一個BlockDiagramm/SchematicFile原理圖文件,在空白處雙擊在對話框中添加該Symbol文件,如下圖所示,點(diǎn)擊OK后返回。4、同步驟3,繼續(xù)添加input、output(輸入輸出)管腳,并重命名后如下圖所示。保存原理圖文件,命名為fulladder8.bdf(與工程名相同)。5、仿真文件點(diǎn)擊主工具欄上的圖標(biāo)進(jìn)行半編譯,完成后新建一個波形仿真文件FileNewVerification/DebuggingFilesVectorVaveformFile.,然后在左邊空白處雙擊左鍵添加仿真管腳,完成后添加激勵信號的波形,首先使用鼠標(biāo)選中信號的一個區(qū)間(變藍(lán)),后左鍵雙擊,輸入二進(jìn)制的數(shù)值,現(xiàn)在以信號a的一個區(qū)間賦值“11110000“為例,如圖依次添加各個信號(可以根據(jù)老師的實(shí)際要求添加不同的信號),并保存,如下圖所示。6、功能仿真選擇ProcessingSimulatorTool在彈出對話框中在仿真模式中選擇”Functional”然后點(diǎn)擊”GenerateFunctionalSimulationNetlist”生成功能仿真的Netlist,完成后點(diǎn)擊”Start”按鈕開始仿真,然后點(diǎn)擊”Report”來查看仿真結(jié)果如下圖所示。7、分配管腳后進(jìn)行全編譯,再下載到FPGA,并連線。(管腳分配選擇AssignmentsPinsPlanner在Location中選擇要分配的管腳參考實(shí)驗(yàn)一和實(shí)驗(yàn)二)全加器的17個輸入所對應(yīng)的管腳同17位撥碼開關(guān)相連,17個輸入管腳是a0~a7、b0~b7和cin,a0~a7、b0~b7代表兩個8位二進(jìn)制數(shù),cin代表進(jìn)位位;9個輸出所對應(yīng)的管腳同9位發(fā)光二極管相連,9個輸出管腳是sum0~sum7和cout,sum0~sum7代表相加結(jié)果,cout代表進(jìn)位。管腳分配:Pin182—a0pin184—a1pin186—a2pin188—a3pin194—a4pin196—a5Pin198—a6pin200—a7Pin181—b0pin183—b1pin185—b2pin187—b3pin189—b4pin195—b5Pin199—b6pin201—b7Pin202—sum0Pin207—sum1Pin216—sum2Pin218—sum3Pin220—sum4Pin222—sum5Pin224—sum6Pin230—sum7Pin214—coutpin203—cin8、實(shí)驗(yàn)記錄輸入輸出LEDCinBi(7..0)Ai(7..0)Sum(7..0)Cout10000000001110111010001001000000011000000011111111100011000000110000601000100011110000實(shí)驗(yàn)四全減器一、實(shí)驗(yàn)?zāi)康脑O(shè)計(jì)并實(shí)現(xiàn)一個一位減法器二、實(shí)驗(yàn)原理1、半減器半減器不考慮低位向本位的借位。一位半減器由兩個輸入、兩個輸出。表1半減器真值表輸入輸出AiBiDiCi0000011110101100由真值表可得到函數(shù)表達(dá)式:2、全減器全減器考慮低位向本位的借位。一位半減器由三個輸入、兩個輸出。全減器真值表:Ci-1是指低位向本位的借位輸入,Ci即是本位向高位的借位輸出。根據(jù)真值表寫出邏輯表達(dá)式:3、用半減器實(shí)現(xiàn)全減器三、實(shí)驗(yàn)步驟1、建立工程fullsub,新建VHDL文件輸入以下代碼保存為fullsub1.vhdl。打開addern.vhdl文件,選擇FileCreat/UpdateCreatSymbolFilesforCurrentFiles生成頂層符號文件。(參考實(shí)驗(yàn)一、二)半減器程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityhalfsubisport(a,b:instd_logic;d,c:outstd_logic);endhalfsub;architecturehalf1ofhalfsubisbegind<=((aand(notb))or((nota)andb));c<=(nota)andb;endhalf1;全減器程序libraryieee;useieee.std_logic_1164.all;entityfullsub1isport(ai,bi,ci:instd_logic;di,co:outstd_logic);endfullsub1;architecturefull1offullsub1iscomponenthalfsub聲明半減器調(diào)用port(a,b:instd_logic;d,c:outstd_logic);endcomponent;signalhalfsub1_d,halfsub1_c,halfsub2_c:std_logic;begin調(diào)用半減器halfsub1:halfsubportmap(ai,bi,halfsub1_d,halfsub1_c);halfsub2:halfsubportmap(halfsub1_d,ci,di,halfsub2_c);co<=(halfsub1_corhalfsub2_c);endfull1;2、新建一個BlockDiagramm/SchematicFile原理圖文件,,在空白處雙擊添加生成的頂層原理圖,并連接input、output(輸入輸出管腳)重命名后如圖所示,保存文件fullsub.bdf。建立仿真文件點(diǎn)擊主工具欄上的圖標(biāo)進(jìn)行半編譯,完成后新建一個波形仿真文件FileNewVerification/DebuggingFilesVectorVaveformFile.,然后在左邊空白處雙擊左鍵添加仿真管腳。完成后添加激勵信號的波形,首先使用鼠標(biāo)選中一個信號(變藍(lán)),利用左邊工具添加仿真信號,根據(jù)需要依次添加各個信號(可以根據(jù)老師的實(shí)際要求添加不同的信號),并保存。4、功能仿真選擇ProcessingSimulatorTool在彈出對話框中在仿真模式中選擇”Functional”然后點(diǎn)擊”GenerateFunctionalSimulationNetlist”生成功能仿真的Netlist,完成后點(diǎn)擊”Start”按鈕開始仿真,完成后點(diǎn)擊”Report”來查看仿真結(jié)果,如圖所示。5、分配管腳,下載、連線選擇AssignmentsPinsPlanner在Location中選擇要分配的管腳,分配完畢后,點(diǎn)擊主工具欄的圖標(biāo)進(jìn)行全編譯,完成后點(diǎn)擊下載到目標(biāo)器件。連線時ai、bi、ci分配的管腳連接撥碼開關(guān),Co、Di所對應(yīng)管腳連接LED指示燈。6、實(shí)驗(yàn)記錄根據(jù)仿真結(jié)果和實(shí)驗(yàn)led發(fā)光二極管的亮滅完成下表,并分析其運(yùn)算結(jié)果的正確性。輸入輸出實(shí)驗(yàn)結(jié)果Ci-1BiAiDiCiDiLEDCiLED0000000110010110110010011101001100111111管腳分配:Pin182—aipin184—bipin186—capin188—copin194—d實(shí)驗(yàn)五四位向量加法/減法器一、實(shí)驗(yàn)?zāi)康脑O(shè)計(jì)并實(shí)現(xiàn)一個四位向量加法/減法器二、實(shí)驗(yàn)原理在前面的幾個實(shí)驗(yàn)中,我們已經(jīng)設(shè)計(jì)了單獨(dú)的加法器和減法器,那如何把它們通過一個設(shè)計(jì)就能實(shí)現(xiàn)呢?在這里,我們通過一個4位的向量加法/減法器來說明,對于多位的運(yùn)算器,其設(shè)計(jì)方法相同,不同的就是位寬不同。對于加法/減法器可以有設(shè)計(jì)成為一種是帶控制信號的運(yùn)算器(即通過控制信號的高低電平來控制這個運(yùn)算是加法器還是減法器),另一種是運(yùn)算器對輸入的兩個操作數(shù)同時進(jìn)行加法和減法操作。兩種運(yùn)算器的框圖如圖所示。(注:當(dāng)ctl=1時,運(yùn)算器為加法器,為0時為減法器)三、實(shí)驗(yàn)步驟1、建立工程addsub,新建VHDL文件輸入以下代碼保存為addsub4.vhdl。打開addsub4.vhdl文件,選擇FileCreat/UpdateCreatSymbolFilesforCurrentFiles生成頂層符號文件。(參考實(shí)驗(yàn)一、二)libraryieee;libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityaddsub4isport(a,b:instd_logic_vector(3downto0);ctl:instd_logic;q:outstd_logic_vector(4downto0));endaddsub4;architectureadd_sub1ofaddsub4isbeginprocess(a,b,ctl)beginifctl='1'thenq<=('0'&a)+b;elsifctl='0'thenq<=('0'&a)-b;endif;endprocess;endadd_sub1;2、然后新建一個BlockDiagramm/SchematicFile原理圖文件,,在空白處雙擊添加生成的頂層原理圖,并連接input、output(輸入輸出管腳)重命名后如圖所示。保存文件fullsub.bdf。3、建立仿真文件點(diǎn)擊主工具欄上的圖標(biāo)進(jìn)行半編譯,完成后新建一個波形仿真文件FileNewVerification/DebuggingFilesVectorVaveformFile.,然后在左邊空白處雙擊左鍵添加仿真管腳。完成后添加激勵信號的波形,首先使用鼠標(biāo)選中一個信號(變藍(lán)),利用左邊工具添加仿真信號,根據(jù)需要依次添加各個信號(可以根據(jù)老師的實(shí)際要求添加不同的信號),并保存。4、功能仿真選擇ProcessingSimulatorTool在彈出對話框中在仿真模式中選擇”Functional”然后點(diǎn)擊”GenerateFunctionalSimulationNetlist”生成功能仿真的Netlist,完成后點(diǎn)擊”Start”按鈕開始仿真,完成后點(diǎn)擊”Report”來查看仿真結(jié)果,如圖所示。5、分配管腳,下載、連線選擇AssignmentsPinsPlanner在Location中選擇要分配的管腳,分配完畢后,點(diǎn)擊主工具欄的圖標(biāo)進(jìn)行全編譯,完成后點(diǎn)擊下載到目標(biāo)器件。連線時a(3..0)、b(3..0)、ctl分配的管腳連接撥碼開關(guān),q(4..0)所對應(yīng)管腳連接LED指示燈。6、實(shí)驗(yàn)記錄根據(jù)仿真結(jié)果和實(shí)驗(yàn)led發(fā)光二極管的亮滅完成下表輸入實(shí)驗(yàn)結(jié)果CtlAi(0..3)Bi(0..3)q(4..0)LED010000111001011110110011100101110111管腳分配:Pin182—a0pin184—a1pin186—a2pin188—a3Pin194—b0pin196—b1pin198—b2pin200—b3Pin202—q0pin207—q1pin216—q2pin218—q3pin220—a4Pin181—ctl實(shí)驗(yàn)六組合邏輯3-8譯碼器的設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康脑O(shè)計(jì)并實(shí)現(xiàn)一個組合邏輯3-8譯碼器。二、實(shí)驗(yàn)原理常用的譯碼器有:2-4譯碼器、3-8譯碼器、4-16譯碼器,下面我們用一個3-8譯碼器的設(shè)計(jì)來介紹譯碼器的設(shè)計(jì)方法。3-8譯碼器如下圖所示:3-8譯碼器真值表輸入輸出G1G2AG2BABCY0NY1NY2NY3NY4NY5NY6NY7N0XXXXX111111111000000111111110000110111111100010110111111000111110111110010011110111100101111110111001101111110110011111111110實(shí)驗(yàn)步驟1、建立工程encode,新建VHDL文件輸入以下代碼保存為encode38.vhdl。打開encode38.vhdl文件,選擇FileCreat/UpdateCreatSymbolFilesforCurrentFiles生成頂層符號文件。(參考實(shí)驗(yàn)一、二)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdecoder38IS PORT( A,B,C,G1,G2A,G2B:IN STD_LOGIC; Y:OUT STD_LOGIC_VECTOR(7DOWNTO0));ENDdecoder38;ARCHITECTUREfunOFdecoder38IS SIGNALindata:STD_LOGIC_VECTOR(2DOWNTO0);BEGIN indata<=C&B&A;encoder: PROCESS(indata,G1,G2A,G2B) BEGIN IF(G1='1'ANDG2A='0'ANDG2B='0')THEN CASEindataIS WHEN"000"=>Y<="11111110"; WHEN"001"=>Y<="11111101"; WHEN"010"=>Y<="11111011"; WHEN"011"=>Y<="11110111"; WHEN"100"=>Y<="11101111"; WHEN"101"=>Y<="11011111"; WHEN"110"=>Y<="10111111"; WHEN"111"=>Y<="01111111"; WHENOTHERS=>Y<="XXXXXXXX"; ENDCASE; ELSE Y<="11111111"; ENDIF; ENDPROCESSencoder; ENDfun;2、新建一個BlockDiagramm/SchematicFile原理圖文件,,在空白處雙擊添加生成的頂層原理圖,并連接input、output(輸入輸出管腳)重命名后如圖所示,保存文件encoder38.bdf。3、點(diǎn)擊主工具欄上的圖標(biāo)進(jìn)行半編譯,完成后新建一個波形仿真文件FileNewVerification/DebuggingFilesVectorVaveformFile.,然后在左邊空白處雙擊左鍵添加仿真管腳。完成后添加激勵信號的波形,首先使用鼠標(biāo)選中一個信號(變藍(lán)),利用左邊工具添加仿真信號,根據(jù)需要依次添加各個信號(可以根據(jù)老師的實(shí)際要求添加不同的信號),并保存。4、功能仿真選擇ProcessingSimulatorTool在彈出對話框中在仿真模式中選擇”Functional”然后點(diǎn)擊”GenerateFunctionalSimulationNetlist”生成功能仿真的Netlist,完成后點(diǎn)擊”Start”按鈕開始仿真,完成后點(diǎn)擊”Report”來查看仿真結(jié)果,如圖所示。5、分配管腳,下載、連線選擇AssignmentsPinsPlanner在Location中選擇要分配的管腳,分配完畢后,點(diǎn)擊主工具欄的圖標(biāo)進(jìn)行全編譯,完成后點(diǎn)擊下載到目標(biāo)器件。連線時A、B、C、G1、G2分配的管腳連接撥碼開關(guān),Y(7..0)所對應(yīng)管腳連接LED發(fā)光二極管。6、實(shí)驗(yàn)記錄C、B、A由高位→低位根據(jù)仿真結(jié)果和實(shí)驗(yàn)led發(fā)光二極管的亮滅完成下表,并分析其運(yùn)算結(jié)果的正確性。輸入輸出G1G2AG2BABCLED1LED2LED3LED4LED5LED6LED7LED80XXXXX100000100001100010100011100100100101100110100111附:3-8譯碼器的原理圖設(shè)計(jì)按照實(shí)驗(yàn)一的方法直接建立原理圖文件也可以連接成38譯碼器,然后保存成默認(rèn)的工程名即可。管腳分配:Pin182—Apin184—Bpin186—Cpin181—G1pin183—G2Apin185—G2BPin216—Y0pin207—Y1Pin202—Y2Pin200—Y3Pin198—Y4Pin196—Y5Pin194—Y6Pin188—Y7實(shí)驗(yàn)七數(shù)據(jù)比較器實(shí)驗(yàn)?zāi)康脑O(shè)計(jì)并實(shí)現(xiàn)一個4位二進(jìn)制數(shù)據(jù)比較器。二、實(shí)驗(yàn)原理二進(jìn)制比較器是提供關(guān)于兩個二進(jìn)制操作數(shù)間關(guān)系信息的邏輯電路。兩個操作數(shù)的比較結(jié)果有三種情況:A等于B、A大于B和A小于B??紤]當(dāng)操作數(shù)A和B都是一位二進(jìn)制數(shù)時,構(gòu)造比較器的真值表見下表。輸入輸出abeq(A=B)hi(A>B)lo(A<B)00100010011001011100在一位比較器的基礎(chǔ)上,我們可以繼續(xù)得到兩位比較器,然后通過“迭代設(shè)計(jì)”得到4位的數(shù)據(jù)比較器。對于4位比較器的設(shè)計(jì),我們可以通過原理圖輸入法或VHDL描述來完成,其中用VHDL語言描述是一種最為簡單的方法。實(shí)驗(yàn)步驟1、建立工程comp,新建VHDL文件輸入以下代碼保存為comp4.vhdl。打開comp4.vhdl文件,選擇FileCreat/UpdateCreatSymbolFilesforCurrentFiles生成頂層符號文件(參考實(shí)驗(yàn)一、二)。libraryieee;useieee.std_logic_1164.all;entitycomp4isport(a,b:instd_logic_vector(3downto0);eq,hi,lo:outstd_logic);endcomp4;architecturecompofcomp4isbeginprocess(a,b)beginif(a>b)theneq<='0';hi<='1';lo<='0';elsif(a<b)theneq<='0';hi<='0';lo<='1';elsif(a=b)theneq<='1';hi<='0';lo<='0';elseeq<='0';hi<='0';lo<='0';endif;endprocess;endcomp;2、然后新建一個BlockDiagramm/SchematicFile原理圖文件,在空白處雙擊添加生成的頂層原理圖,并連接input、output(輸入輸出管腳)重命名后如圖所示,保存文件comp.bdf。3、點(diǎn)擊主工具欄上的圖標(biāo)進(jìn)行半編譯,完成后新建一個波形仿真文件FileNewVerification/DebuggingFilesVectorVaveformFile.,然后在左邊空白處雙擊左鍵添加仿真管腳。完成后添加激勵信號的波形,首先使用鼠標(biāo)選中一個信號(變藍(lán)),利用左邊工具添加仿真信號,根據(jù)需要依次添加各個信號(可以根據(jù)老師的實(shí)際要求添加不同的信號),并保存。4、功能仿真選擇ProcessingSimulatorTool在彈出對話框中在仿真模式中選擇”Functional”然后點(diǎn)擊”GenerateFunctionalSimulationNetlist”生成功能仿真的Netlist,完成后點(diǎn)擊”Start”按鈕開始仿真,完成后點(diǎn)擊”Report”來查看仿真結(jié)果,如圖所示。5、分配管腳,下載、連線選擇AssignmentsPinsPlanner在Location中選擇要分配的管腳,分配完畢后,點(diǎn)擊主工具欄的圖標(biāo)進(jìn)行全編譯,完成后點(diǎn)擊下載到目標(biāo)器件。連線時輸入信號a0~a3、b0~b3所分配的管腳分別連接撥碼開關(guān),輸出信號eq、hi、lo所對應(yīng)管腳分別連接LED發(fā)光二極管。6、實(shí)驗(yàn)記錄根據(jù)仿真結(jié)果和實(shí)驗(yàn)led發(fā)光二極管的亮滅完成下表,并分析其運(yùn)算結(jié)果的正確性。輸入輸出A0~A3B0~B3eq(LED1)hi(LED2)lo(LED3)0000000011001100111011111111111011111111管腳分配:Pin182—a0pin184—a1pin186—a2pin188—a3Pin194—b0pin196—b1pin198—b2pin200—b3Pin181—eqpin183—hipin216—lo實(shí)驗(yàn)八多路數(shù)據(jù)選擇器一、實(shí)驗(yàn)?zāi)康脑O(shè)計(jì)并實(shí)現(xiàn)一個16選1多路數(shù)據(jù)選擇器。二、實(shí)驗(yàn)原理在VHDL語言中描述一個2選一的多路選擇器的方法有多種,例如:在一個進(jìn)程中使if-when-else語句;在一個進(jìn)程中case語句;使用withselect構(gòu)造或使用結(jié)構(gòu)VHDL。推薦的使用方法是使用whenelse構(gòu)造,這樣在VHDL代碼中只用1行就可以描述2選1多路選擇器。例如:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMUX2IS PORT(A,B,SEL: IN STD_LOGIC; Q: OUT STD_LOGIC);END;ARCHITECTUREAOFMUX2ISBEGIN Q<=AWHENSEL=’0’ELSEB;END;但我們在描述一個16選1的多路選擇器時,若采用同樣的方法,則就需要許多行VHDL代碼,此時我們可以在進(jìn)程中使用case語句會很清晰,但無論使用哪一種描述方法,綜合得到的結(jié)果是相同的。16選1多路選擇器結(jié)構(gòu)圖如下圖所示。三、實(shí)驗(yàn)步驟1、建立工程select,新建VHDL文件輸入以下代碼保存為mux16_1.vhdl。打開comp4.vhdl文件,選擇FileCreat/UpdateCreatSymbolFilesforCurrentFiles生成頂層符號文件。(參考實(shí)驗(yàn)一、二)libraryieee;useieee.std_logic_1164.all;entitymux16_1isport(A,B,C,D:instd_logic;數(shù)據(jù)選擇端en:instd_logic;inp:instd_logic_vector(15downto0);--數(shù)據(jù)輸入outp:outstd_logic);數(shù)據(jù)輸出endmux16_1;architecturetstofmux16_1issignalsel:std_logic_vector(3downto0);beginsel<=D&C&B&A;process(en,sel,inp)beginif(en='1')then caseselis when"0000"=>outp<=inp(0); when"0001"=>outp<=inp(1); when"0010"=>outp<=inp(2); when"0011"=>outp<=inp(3); when"0100"=>outp<=inp(4); when"0101"=>outp<=inp(5); when"0110"=>outp<=inp(6); when"0111"=>outp<=inp(7); when"1000"=>outp<=inp(8); when"1001"=>outp<=inp(9); when"1010"=>outp<=inp(10); when"1011"=>outp<=inp(11); when"1100"=>outp<=inp(12); when"1101"=>outp<=inp(13); when"1110"=>outp<=inp(14); when"1111"=>outp<=inp(15); endcase;elseoutp<='0';endif;endprocess;endtst;然后新建一個BlockDiagramm/SchematicFile原理圖文件,在空白處雙擊添加生成的頂層原理圖,并連接input、output(輸入輸出管腳)重命名后如圖所示,保存文件select.bdf。)3、點(diǎn)擊主工具欄上的圖標(biāo)進(jìn)行半編譯,完成后新建一個波形仿真文件FileNewVerification/DebuggingFilesVectorVaveformFile.,然后在左邊空白處雙擊左鍵添加仿真管腳。完成后添加激勵信號的波形,首先使用鼠標(biāo)選中一個信號(變藍(lán)),利用左邊工具添加仿真信號,根據(jù)需要依次添加各個信號(可以根據(jù)老師的實(shí)際要求添加不同的信號)。例如這里16位數(shù)據(jù)管腳賦值”0110100101100101”,并保存,可以是系統(tǒng)默認(rèn)的名稱。4、功能仿真選擇ProcessingSimulatorTool在彈出對話框中在仿真模式中選擇”Functional”然后點(diǎn)擊”GenerateFunctionalSimulationNetlist”生成功能仿真的Netlist,當(dāng)有多個仿真文件時可以點(diǎn)擊來添加其他的文件,不需要時則無需操作。完成后點(diǎn)擊”Start”按鈕開始仿真,完成后點(diǎn)擊”Report”來查看仿真結(jié)果,如圖所示。5、分配管腳,下載、連線選擇AssignmentsPinsPlanner在Location中選擇要分配的管腳,分配完畢后,點(diǎn)擊主工具欄的圖標(biāo)進(jìn)行全編譯,完成后點(diǎn)擊下載到目標(biāo)器件。連線時輸入信號EN、A、B、C、D、DAT(15..0)所分配的管腳分別連接撥碼開關(guān),輸出信號OUT所對應(yīng)管腳連接LED發(fā)光二極管。6、實(shí)驗(yàn)記錄D、C、B、A由高位→低位根據(jù)仿真結(jié)果和實(shí)驗(yàn)led發(fā)光二極管的亮滅完成下表,并分析其運(yùn)算結(jié)果的正確性。并自行完成32選一的多路數(shù)據(jù)選擇器。輸入信號輸出EN181A183B185C187DDAT(15..0)OUT(LED)0XXXX0:亮1:滅0110100101100101011000101001110010010110101011011110100011100110101111011001111011101111111110000管腳分配:Pin181—Apin183—Bpin185—Cpin187—Dpin189—enpin195—outpPin182—inp0pin184—inp1pin186—inp2pin188—inp3pin194—inp4pin196—inp5Pin198—inp6pin200—inp7pin202—inp8pin207—inp9pin216—inp10pin218—inp11Pin220—inp12pin222—inp13pin224—inp14pin230—inp15實(shí)驗(yàn)九編碼器實(shí)驗(yàn)?zāi)康脑O(shè)計(jì)并實(shí)現(xiàn)一個16-4優(yōu)先編碼器。實(shí)驗(yàn)原理常用的編碼器有:4-2編碼器、8-3編碼器、16-4編碼器,編碼器的邏輯功能就是把輸入的每一個高低電平信號變成一個對應(yīng)的二進(jìn)制代碼。在優(yōu)先編碼器電路中,允許同時輸入兩個以上編碼信號。當(dāng)幾個輸入信號同時出現(xiàn)時,只對其中優(yōu)先權(quán)最高的一個進(jìn)行編碼。下面我們用一個8-3編碼器的來介紹編碼器的原理方法。8-3編碼器如圖所示:8-3優(yōu)先編碼器真值表輸入輸出EIN0N1N2N3N4N5N6N7NA2NA1NA0NGSNEON1XXXXXXXX11111011111111111100XXXXXXX0000010XXXXXX01001010XXXXX011010010XXXX0111011010XXX01111100010XX011111101010X01111111100100111111111101三、實(shí)驗(yàn)步驟1、建立工程encode,新建VHDL文件輸入以下代碼保存為ENCODE16_4.vhdl。打開ENCODE16_4.vhdl文件,選擇FileCreat/UpdateCreatSymbolFilesforCurrentFiles生成頂層符號文件。(參考實(shí)驗(yàn)一、二)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYENCODE16_4IS PORT(D: IN STD_LOGIC_VECTOR(15DOWNTO0); EIN: IN STD_LOGIC; A0N,A1N,A2N,A3N,GSN,EON: OUTSTD_LOGIC);ENDENCODE16_4;ARCHITECTUREAOFENCODE16_4ISSIGNALQ: STD_LOGIC_VECTOR(3DOWNTO0);BEGINA0N<=Q(0);A1N<=Q(1);A2N<=Q(2);A3N<=Q(3); PROCESS(D) BEGIN IFEIN='1'THEN Q<="1111"; GSN<='1';EON<='1'; ELSIF D(0)='0' THEN Q<="1111"; GSN<='0'; EON<='1'; ELSIF D(1)='0' THEN Q<="1110"; GSN<='0'; EON<='1'; ELSIF D(2)='0' THEN Q<="1101"; GSN<='0'; EON<='1'; ELSIF D(3)='0' THEN Q<="1100"; GSN<='0'; EON<='1'; ELSIF D(4)='0' THEN Q<="1011"; GSN<='0'; EON<='1'; ELSIF D(5)='0' THEN Q<="1010"; GSN<='0'; EON<='1'; ELSIF D(6)='0' THEN Q<="1001"; GSN<='0'; EON<='1'; ELSIF D(7)='0' THEN Q<="1000"; GSN<='0'; EON<='1'; ELSIF D(8)='0' THEN Q<="0111"; GSN<='0'; EON<='1'; ELSIF D(9)='0' THEN Q<="0110"; GSN<='0'; EON<='1'; ELSIF D(10)='0' THEN Q<="0101"; GSN<='0'; EON<='1'; ELSIF D(11)='0' THEN Q<="0100"; GSN<='0'; EON<='1'; ELSIF D(12)='0' THEN Q<="0011"; GSN<='0'; EON<='1'; ELSIF D(13)='0' THEN Q<="0010"; GSN<='0'; EON<='1'; ELSIF D(14)='0' THEN Q<="0001"; GSN<='0'; EON<='1'; ELSIF D(15)='0' THEN Q<="0000"; GSN<='0'; EON<='1'; ELSIF D="1111111111111111" THEN Q<="1111"; GSN<='1'; EON<='1'; ENDIF; ENDPROCESS;ENDA;2、新建一個BlockDiagramm/SchematicFile原理圖文件,在空白處雙擊添加生成的頂層原理圖,并連接input、output(輸入輸出管腳)重命名后如圖所示,保存文件encode.bdf。3、點(diǎn)擊主工具欄上的圖標(biāo)進(jìn)行半編譯,完成后新建一個波形仿真文件FileNewVerification/DebuggingFilesVectorVaveformFile.,然后在左邊空白處雙擊左鍵添加仿真管腳。完成后添加激勵信號的波形,首先編碼信號使用鼠標(biāo)選中一個信號的區(qū)域(變藍(lán)),利用左鍵雙擊選中區(qū)域輸入二進(jìn)制碼,其他根據(jù)需要依次添加各個信號(可以根據(jù)老師的實(shí)際要求添加不同的信號)。并保存,可以是系統(tǒng)默認(rèn)的名稱。4、功能仿真選擇ProcessingSimulatorTool在彈出對話框中在仿真模式中選擇”Functional”然后點(diǎn)擊”GenerateFunctionalSimulationNetlist”生成功能仿真的Netlist,完成后點(diǎn)擊”Start”按鈕開始仿真,完成后點(diǎn)擊”Report”來查看仿真結(jié)果,如下圖所示為截取的部分仿真波形。5、分配管腳,下載、連線選擇AssignmentsPinsPlanner在Location中選擇要分配的管腳,分配完畢后,點(diǎn)擊主工具欄的進(jìn)行全編譯,完成后點(diǎn)擊下載到目標(biāo)器件。連線時輸入信號EIN、D(15..0)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論