實(shí)驗(yàn)四序列發(fā)生器_第1頁(yè)
實(shí)驗(yàn)四序列發(fā)生器_第2頁(yè)
實(shí)驗(yàn)四序列發(fā)生器_第3頁(yè)
實(shí)驗(yàn)四序列發(fā)生器_第4頁(yè)
實(shí)驗(yàn)四序列發(fā)生器_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

南昌大學(xué)實(shí)驗(yàn)報(bào)告學(xué)生姓名:學(xué)號(hào):專業(yè)班級(jí):中興101班實(shí)驗(yàn)類型:□驗(yàn)證□綜合■設(shè)計(jì)□創(chuàng)新實(shí)驗(yàn)日期:2023、11、16成績(jī):實(shí)驗(yàn)四序列信號(hào)發(fā)生器與檢測(cè)器設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)VHDL文本輸入法2、學(xué)習(xí)有限狀態(tài)機(jī)的設(shè)計(jì)3、利用狀態(tài)機(jī)實(shí)現(xiàn)串行序列的輸出與序列的檢測(cè)4、繼續(xù)學(xué)習(xí)優(yōu)化設(shè)計(jì)二.實(shí)驗(yàn)內(nèi)容與要求2.用有限狀態(tài)機(jī)設(shè)計(jì)序列檢測(cè)器,實(shí)現(xiàn)串行序列11010的檢測(cè)器3.假設(shè)檢測(cè)到符合要求的序列,那么輸出顯示位為“1〞,否那么為“0〞4.對(duì)檢測(cè)到的次數(shù)計(jì)數(shù)5.整個(gè)工程采用頂層文件+底層模塊的原理圖或文本的設(shè)計(jì)思路三、實(shí)驗(yàn)儀器PC機(jī)、QuartusII軟件、EDA實(shí)驗(yàn)箱四、實(shí)驗(yàn)思路設(shè)計(jì)序列發(fā)生器根本思想為一個(gè)信號(hào)CQ1計(jì)數(shù),給另一個(gè)信號(hào)CO〔代表序列的每一位〕賦值的方法:先設(shè)定端口CQ1用于產(chǎn)生序列時(shí)計(jì)數(shù),因?yàn)樾蛄泄?6位,因此端口CQ1為標(biāo)準(zhǔn)邏輯矢量,位寬為4,設(shè)另一個(gè)端口M代表序列的每一位,CQ1每計(jì)一個(gè)數(shù),就給M賦一個(gè)值,這樣產(chǎn)生一個(gè)16位的序列。由于端口不能參與相關(guān)運(yùn)算,因此在結(jié)構(gòu)體中我分別定義了信號(hào)CQ1(標(biāo)準(zhǔn)邏輯矢量,位寬4),信號(hào)Q與相應(yīng)的端口CQ1CO對(duì)應(yīng),在進(jìn)程中參與相應(yīng)的運(yùn)算,在程序的最后再用端口接收信號(hào):CO<=Q;在進(jìn)程中我采用case–when語(yǔ)句,如當(dāng)CQ1為“0000〞的時(shí)候,給另一信號(hào)Q賦‘0’,當(dāng)CQ1為“0001〞時(shí),為Q賦‘1’以此類推,且讓CQ1產(chǎn)生循環(huán),即可源源不斷的產(chǎn)生所需序列了,如下表CQ100000001001000110100010101100111Q01110100CQ110001001101010111100110111101111Q11011010序列檢測(cè)器序列檢測(cè)器設(shè)計(jì)的關(guān)鍵在于正確碼的收到必須是連續(xù)的,這就要求檢測(cè)器必須記住前一次的正確碼及序列,直到在連續(xù)的檢測(cè)中收到的每一位碼都與實(shí)驗(yàn)要求相同。在此,必須利用狀態(tài)轉(zhuǎn)移圖。電路需要分別不間斷記憶:初始狀態(tài)、1、11、110、1101、11010共六種狀態(tài),狀態(tài)轉(zhuǎn)移如圖:11010S0S1S2S3S4S500111假設(shè)檢測(cè)到“11010〞序列,那么輸出信號(hào)N為1,定義VARIABLEX:STD_LOGIC_VECTOR(3DOWNTO0)進(jìn)行計(jì)數(shù),最后把變量X賦給輸出SS,在數(shù)碼管上顯示檢測(cè)到序列“11010〞的次數(shù)。3.時(shí)鐘脈沖的選擇數(shù)碼管顯示的掃描時(shí)鐘需要很快的速度,因此采用1KHz頻率的時(shí)鐘;而序列發(fā)生器,為了能夠人眼識(shí)別亮滅,那么我選擇采用2000分頻之后得到的0.5Hz頻率五.原理圖輸入法設(shè)計(jì)〔程序來(lái)源:根本上獨(dú)立完成〕1.建立文件夾建立自己的文件夾〔目錄〕,如c:\myeda,進(jìn)入Windows操作系統(tǒng)QuartusII不能識(shí)別中文,2.原理圖設(shè)計(jì)輸入翻開(kāi)QuartusII,選菜單File→New,選擇“DeviceDesignFile->BlockDiagram->SchematicFile〞項(xiàng)。點(diǎn)擊“OK〞,在主界面中將翻開(kāi)“BlockEditor〞窗口。分頻器模塊:〔實(shí)體名為DIV〕本設(shè)計(jì)使用的FPGA開(kāi)發(fā)板中使用的芯片是CycloneIIEP2C35F672C8,使用的是10kHz的時(shí)鐘脈沖輸入,根據(jù)電路的具體設(shè)計(jì)需要,對(duì)其進(jìn)行分頻設(shè)計(jì)。如圖1所示為系統(tǒng)的分頻模塊,其中模塊Clockout管腳輸出為0.5hz的時(shí)鐘脈沖,得出序列發(fā)生器和序列檢測(cè)器模塊正常工作的時(shí)鐘信號(hào),在Clockin管腳輸出為一個(gè)1khz的時(shí)鐘脈沖,作用與動(dòng)態(tài)掃描模塊的正常工作。輸入管腳:Clockin為1khz脈沖輸入;輸出管腳:Clockout為0.5hz脈沖輸出;圖1--時(shí)間:2023年11月10號(hào)--版本:7.2--功能:分頻器〔2000分頻〕分頻模塊DIV源代碼div.vhd如下:-------分頻程序,從1KHZ中得到0.5HZ的計(jì)數(shù)頻率,2000分頻----------LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;--這3個(gè)程序包足發(fā)應(yīng)付大局部的VHDL程序設(shè)計(jì)USEIEEE.STD_LOGIC_Arith.ALL;USEIEEE.STD_LOGIC_Unsigned.ALL;ENTITYDIVISGENERIC(N:Integer:=20000);--此處定義了一個(gè)默認(rèn)值N=10000,即電路為10000分頻電路;Port(Clockin:INSTD_LOGIC;ClockOut:OUTSTD_LOGIC);END;ARCHITECTUREDeviderOFDIVISSIGNALCounter:IntegerRANGE0TON-1;SIGNALTemp1:STD_LOGIC; --信號(hào)的聲明在結(jié)構(gòu)體內(nèi),進(jìn)程外部BEGIN PROCESS(Clockin)BEGINIFRISING_EDGE(Clockin)THEN IFCounter=N-1THEN counter<=0; Temp1<=NotTemp1; ELSE Counter<=Counter+1; IFCounter=(N/2-1)THEN Temp1<=NOTTemp1; ENDIF;ENDIF;ENDIF;ENDPROCESS;ClockOut<=Temp1;END;序列發(fā)生器模塊:〔實(shí)體名為C_OUT〕序列發(fā)生器模塊如圖2所示,其中:輸入管腳:CLK為0.5hz的時(shí)鐘脈沖;RST為復(fù)位信號(hào);輸出管腳:CO序列發(fā)生器設(shè)計(jì)時(shí)用于計(jì)數(shù),實(shí)現(xiàn)模16計(jì)數(shù),以產(chǎn)生16位的序列圖2--時(shí)間:2023年11月10號(hào)--版本:7.2--功能:產(chǎn)生一個(gè)十六位的指定序列-----------------C_OUT------------------------------------------------------------------LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;--為了重載ENTITYC_OUTISPORT(CLK,RST:INSTD_LOGIC;--定義時(shí)鐘和復(fù)位信號(hào)CO:OUTSTD_LOGIC);--序列發(fā)生器設(shè)計(jì)時(shí)用于計(jì)數(shù),實(shí)現(xiàn)模16計(jì)數(shù),以產(chǎn)生16位的序列ENDC_OUT;----------------------------------------------------------------------------------------ARCHITECTUREbehavOFC_OUTISSIGNALCQ1:STD_LOGIC_VECTOR(3DOWNTO0);--定義信號(hào)進(jìn)行計(jì)數(shù).實(shí)現(xiàn)模16計(jì)數(shù),對(duì)應(yīng)依次產(chǎn)生序列的位0到位15;SIGNALQ:STD_LOGIC;BEGINPROCESS(CLK,RST,Q)BEGINIFRST='1'THENCQ1<="0000";Q<='0';--如果復(fù)位,那么計(jì)數(shù)器清0,M也清0ELSIFCLK'EVENTANDCLK='1'THENCQ1<=CQ1+1;--時(shí)鐘上升沿到來(lái),Q開(kāi)始計(jì)數(shù),產(chǎn)生序列CASECQ1ISWHEN"0000"=>Q<='0';WHEN"0001"=>Q<='1';WHEN"0010"=>Q<='1';WHEN"0011"=>Q<='1';WHEN"0100"=>Q<='0';WHEN"0101"=>Q<='1';WHEN"0110"=>Q<='0';WHEN"0111"=>Q<='0';WHEN"1000"=>Q<='1';WHEN"1001"=>Q<='1';WHEN"1010"=>Q<='0';WHEN"1011"=>Q<='1';WHEN"1100"=>Q<='1';WHEN"1101"=>Q<='0';WHEN"1110"=>Q<='1';WHEN"1111"=>Q<='0';ENDCASE;ENDIF;ENDPROCESS;--序列發(fā)生器到此結(jié)束CO<=Q;ENDbehav;〔3〕序列檢測(cè)模塊:〔實(shí)體名為SCHK〕序列檢測(cè)模塊如圖3所示,其中:輸入管腳:CLK為0.5hz的時(shí)鐘脈沖;EN為使能端,為1才正常工作;M為顯示當(dāng)前產(chǎn)生的位;輸出管腳:N為顯示滿足序列要求時(shí),產(chǎn)生‘1’,即為標(biāo)志位。圖3--時(shí)間:2023年11月10號(hào)--版本:7.2--功能:檢測(cè)指定的序列----------SCHK------------------------------------------------------------------------------LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;--為了重載ENTITYSCHKISPORT(CLK,EN,M:INSTD_LOGIC;--EN為使能端,為1才正常工作;M為顯示當(dāng)前產(chǎn)生的位N:OUTSTD_LOGIC);-N為顯示滿足序列要求時(shí),產(chǎn)生‘1’,即為標(biāo)志位ENDSCHK;----------------------------------------------------------------------------------------ARCHITECTUREbehavOFSCHKISTYPESTATEIS(S0,S1,S2,S3,S4,S5);---狀態(tài)機(jī)的定義,5個(gè)狀態(tài)SIGNALS:STATE;SIGNALA1,A2,A3,A4,A5:STD_LOGIC;--SIGNALQ:INTEGERRANGE0TO5;--SIGNALD:STD_LOGIC_VECTOR(4DOWNTO0);SIGNALN1:STD_LOGIC;BEGINPROCESS(CLK,S,N1,EN)---序列檢測(cè)器進(jìn)程BEGINIFEN='0'THENS<=S0;N1<='0';A5<='0';A4<='0';A3<='0';A2<='0';A1<='0';ELSIFCLK'EVENTANDCLK='0'THENN1<='0';CASESISWHENS0=>ifM='1'thenS<=S1;elseS<=S0;endif;WHENS1=>ifM='1'thenS<=S2;elseS<=S0;endif;WHENS2=>ifM='0'thenS<=S3;elseS<=S2;endif;WHENS3=>ifM='1'thenS<=S4;elseS<=S0;endif;WHENS4=>ifM='0'thenS<=S5;----生成一個(gè)11010序列N1<='1';elseS<=S2;endif;--11011010里有一個(gè),同時(shí)計(jì)數(shù)WHENothers=>S<=S0;ENDCASE;A5<=A4;---移位輸出顯示在led上以便觀看A4<=A3;A3<=A2;A2<=A1;A1<=M;--將最近生產(chǎn)的序列賦給最前端的A1位endif;N<=N1;--顯示檢測(cè)到11010,檢測(cè)到時(shí)它為高電平,它所對(duì)應(yīng)二極管亮,否那么二極管滅ENDPROCESS;ENDbehav;〔4〕16進(jìn)制計(jì)數(shù)模塊〔實(shí)體名:COUNT〕16進(jìn)制計(jì)數(shù)模塊如圖4所示,其中:輸入管腳:CLK為檢測(cè)到一個(gè)序列產(chǎn)生一個(gè)脈沖;RST為計(jì)數(shù)復(fù)位信號(hào);EN為使能端;輸出管腳:Q[3..0]為計(jì)數(shù)的個(gè)位;COUNT計(jì)數(shù)到達(dá)15時(shí),產(chǎn)生標(biāo)志信號(hào)圖4--時(shí)間:2023年11月10號(hào)--版本:7.2--功能:16進(jìn)制計(jì)數(shù)模塊-------------COUNT-----------------------------------------------LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCOUNTISPORT(CLK,RST,EN:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT:OUTSTD_LOGIC);ENDENTITYCOUNT;----------------------------------------------------------------------------------------ARCHITECTUREONEOFCOUNTISBEGINPROCESS(CLK,EN,RST)VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFRST='1'THENCQI:=(OTHERS=>'0');ELSIFCLK'EVENTANDCLK='1'THENIFEN='1'THENIFCQI<15THENCQI:=CQI+1;ELSECQI:="0000";ENDIF;ENDIF;ENDIF;IFCQI=15THENCOUT<='1';ELSECOUT<='0';ENDIF;Q<=CQI;ENDPROCESSCOUNT;ENDARCHITECTUREONE;〔5〕數(shù)碼管顯示模塊〔實(shí)體名:scan_led〕數(shù)碼管顯示模塊如圖5所示,其中:輸入管腳:CLK為1khz的時(shí)鐘脈沖;data1[3..0]為要顯示的數(shù)的個(gè)位;data2[3..0]為要顯示的數(shù)的十位;輸出管腳:scan數(shù)碼管顯示碼choose數(shù)碼管位選信號(hào)圖5--時(shí)間:2023年11月10號(hào)--版本:7.2--功能:將計(jì)數(shù)結(jié)果在數(shù)碼管顯示---------------scan_led---------------------------------LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYscan_ledISPORT(clk:INSTD_LOGIC;data1,data2:INSTD_LOGIC_VECTOR(3DOWNTO0);scan:OUTSTD_LOGIC_VECTOR(6DOWNTO0);--scan數(shù)碼管顯示碼choose:OUTSTD_LOGIC_VECTOR(2DOWNTO0));--choose數(shù)碼管位選信號(hào)ENDENTITY;ARCHITECTUREoneOFscan_ledISSIGNALcout8:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALA:STD_LOGIC_VECTOR(3DOWNTO0);BEGINP1:PROCESS(cout8)—片選BEGINCASEcout8ISWHEN"000"=>choose<="000";A<=data1;WHEN"001"=>choose<="001";A<=data2;WHEN"010"=>choose<="010";A<="0000";WHEN"011"=>choose<="011";A<="0000";WHEN"100"=>choose<="100";A<="0000";WHEN"101"=>choose<="101";A<="0000";WHEN"110"=>choose<="110";A<="0000";WHEN"111"=>choose<="111";A<="0000";WHENOTHERS=>NULL;ENDCASE;ENDPROCESSP1;P2:PROCESS(clk)BEGINIFclk'EVENTANDclk='1'THENcout8<=cout8+1;ENDIF;ENDPROCESSP2;P3:PROCESS(A)—譯碼BEGINCASEAIS WHEN"0000"=>scan<="0111111";--0 WHEN"0001"=>scan<="0000110";--1 WHEN"0010"=>scan<="1011011";--2 WHEN"0011"=>scan<="1001111";--3 WHEN"0100"=>scan<="1100110";--4 WHEN"0101"=>scan<="1101101";--5 WHEN"0110"=>scan<="1111101";--6 WHEN"0111"=>scan<="0000111";--7 WHEN"1000"=>scan<="1111111";--8 WHEN"1001"=>scan<="1101111";--9WHEN"1010"=>scan<="1110111";--A WHEN"1011"=>scan<="1111100";--B WHEN"1100"=>scan<="0111001";--C WHEN"1101"=>scan<="1011110";--D WHEN"1110"=>scan<="1111001";--E WHEN"1111"=>scan<="1110001";--F WHENOTHERS=>NULL; ENDCASE;ENDPROCESSP3;END;2.包裝元件入庫(kù)。編譯通過(guò)后,單擊File→CreateDefaultSymbol,當(dāng)前文件變成了一個(gè)包裝好的自己的單一元件,并被放置在工程路徑指定的目錄中以備后用。3.保存各個(gè)模塊的原理圖單擊File→Saveas…按扭,出現(xiàn)對(duì)話框,選擇自己的目錄〔如c:\myeda〕,適宜名稱保存剛剛輸入的原理圖,原理圖的擴(kuò)展名為.bdf。4.設(shè)置工程文件〔Project〕以EXP4為工程名命名5.選擇目標(biāo)器件6.放置元件7.添加連線將以上各器件連接成實(shí)驗(yàn)原理圖如下:圖6原理圖設(shè)計(jì)8.編譯〔Compiler〕單擊→QuartusIICompiler,跳出Compiler窗口,此編譯器的功能包括網(wǎng)表文件的提取、設(shè)計(jì)文件的排錯(cuò)、邏輯綜合、邏輯分配、適配〔結(jié)構(gòu)綜合〕、時(shí)序仿真文件提取和編程下載文件裝配等。單擊Start,開(kāi)始編譯!如果發(fā)現(xiàn)有錯(cuò),排除錯(cuò)誤后再次編譯。7.仿真,測(cè)試工程的正確性〔僅對(duì)計(jì)數(shù)模塊進(jìn)行仿真測(cè)試〕1〕建立新的波形鼓勵(lì)文件2〕在波形編輯器窗口添加節(jié)點(diǎn)3〕通過(guò)Edit->EndTime來(lái)設(shè)定仿真結(jié)束時(shí)間為1ms4〕在CLOCK窗口中設(shè)置clk的時(shí)鐘周期為10ns時(shí)間設(shè)置如下:5〕點(diǎn)擊save保存,輸入波形如下:6)通過(guò)Tools下的SimulatorTools項(xiàng)進(jìn)行仿真,然后觀察輸出波形。仿真波形以及分析如下:初步檢驗(yàn):對(duì)上述問(wèn)題進(jìn)行調(diào)整當(dāng)使能端EN=1,RST=0時(shí)產(chǎn)生序列“〞當(dāng)使能端EN=1,RST=0時(shí)產(chǎn)生序列“〞對(duì)檢測(cè)器進(jìn)行考察:當(dāng)產(chǎn)生一個(gè)“11010〞時(shí),N增1,當(dāng)產(chǎn)生一個(gè)“11010〞時(shí),N增1,當(dāng)RST=0時(shí),序列輸出端CO=0,不產(chǎn)生序列,且計(jì)數(shù)器保持原始計(jì)數(shù)當(dāng)RST=0時(shí),序列輸出端CO=0,不產(chǎn)生序列,且計(jì)數(shù)器保持原始計(jì)數(shù)對(duì)序列發(fā)生器清零端進(jìn)行考察:對(duì)計(jì)數(shù)器的考察:當(dāng)計(jì)數(shù)到達(dá)15時(shí),count=1,且從零開(kāi)始計(jì)數(shù)當(dāng)計(jì)數(shù)到達(dá)15時(shí),count=1,且從零開(kāi)始計(jì)數(shù)對(duì)計(jì)數(shù)清零端進(jìn)行考察:當(dāng)RST1=1時(shí),脈沖仍然正常產(chǎn)生,但是計(jì)數(shù)清零,為0時(shí),重新計(jì)數(shù)當(dāng)RST1=1時(shí),脈沖仍然正常產(chǎn)生,但是計(jì)數(shù)清零,為0時(shí),重新計(jì)數(shù)對(duì)狀態(tài)圖的考察由上可知,仿真結(jié)果與要求一致!六、引腳鎖定和編程下載1.Assignments-.>device->引腳鎖定,參照下載實(shí)驗(yàn)板1K100的引腳號(hào)說(shuō)明書(shū),選擇適當(dāng)?shù)囊_2.引腳鎖定后,保存,必須重新進(jìn)行一次全程編譯,編譯通過(guò)后才能編程下載。3、編程下載,用下載線將計(jì)算機(jī)并口和試驗(yàn)箱上的JTAG口接起來(lái),接通電源。選擇Tools—>Programmer菜單,翻開(kāi)programmer窗口。在mode中選中JTAG,將Program/Configure下的笑方框選中4在開(kāi)始編程之前,必須正確設(shè)置編程硬件。點(diǎn)擊“HardwareSetup〞按鈕,翻開(kāi)硬件設(shè)置口。點(diǎn)擊“AddHardware〞翻開(kāi)硬件添加窗口,在“Hardwaretype〞下拉框中選擇“ByteBlasterMVorByte

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論