




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Type textType textType text電子工程學院數(shù)字電路綜合實驗報告課題名稱:擲篩子游戲電路的設(shè)計與實現(xiàn)班級:姓名:學號:序號:日 期: 2014年 11月1摘 要本實驗報告為擲篩子游戲電路的設(shè)計與實現(xiàn)報告。實驗設(shè)計了基于VHDL描述的擲篩子游戲系統(tǒng),通過仿真和下載可以在開發(fā)板上實現(xiàn)簡易的雙人擲篩子游戲過程。完成的功能包括開機動畫,甲乙各按鍵產(chǎn)生隨機數(shù)、按規(guī)則判斷輸贏,最多游戲六局且顯示贏家的過程。報告中給出了完整的設(shè)計思路和過程,給出了VHDL語言描述以及仿真的部分波形,最終下載到實驗板上測試通過。關(guān)鍵詞: VHDL;擲篩子游戲系統(tǒng) 第一部分 任務(wù)要求31.1課題要求和設(shè)計
2、目標3第二部分 系統(tǒng)設(shè)計42.1設(shè)計思路42.2系統(tǒng)結(jié)構(gòu)框圖52.3分塊設(shè)計72.4系統(tǒng)仿真驗證13第三部分 結(jié)果與分析143.1元器件和儀表清單143.2器件資源分析153.3故障和問題分析15第四部分 總結(jié)與結(jié)論164.1實驗結(jié)論164.2總結(jié)體會16第五部分 附錄部分185.1VHDL源代碼185.2參考文獻47-I-數(shù)字電路綜合實驗·報告第一部分 任務(wù)要求1.1課題要求和設(shè)計目標基本要求:1、 電路可供甲乙二人游戲,游戲者甲使用的按鍵為 BTN0,游戲者乙使用的按鍵為BTN1。2、 每按一次按鍵,代表擲一次骰子,可隨機得到 16 范圍內(nèi)的兩個數(shù)字。3、 甲乙按鍵產(chǎn)生的隨機數(shù)字
3、分別用數(shù)碼管 DISP0-DISP1、DISP2-DISP3 顯示,并用DISP7 顯示比賽局數(shù),比賽結(jié)束用 8×8 點陣顯示獲勝方,并伴有聲音效果。4、 具體游戲規(guī)則如下:(1) 第一局比賽,甲乙依次各按一次按鍵,按鍵所得兩數(shù)之和為 7 或 11 者勝;若無 人取勝,則進行第二局比賽;(2) 第二局比賽,甲乙每人各按一次按鍵,按鍵所得二數(shù)之和與第一局比賽相同者獲 勝,若無人獲勝,則進行第三局比賽,重復(fù)進行步驟(2),直到出現(xiàn)勝者為止。(3) 游戲局數(shù)最多進行六局。在第六局比賽時,若重復(fù)進行步驟(2)仍未出現(xiàn)勝者, 以按鍵所得兩數(shù)之和最大者為獲勝方。提高要求:1、 增加多人游戲的功能
4、,數(shù)碼管可分時記錄顯示每個游戲者的骰子點數(shù)。2、 點陣顯示增加游戲開機動畫、結(jié)束動畫,并伴有樂曲播放。3、 自擬其它功能。所需器件:數(shù)碼管D0-D1(顯示甲的兩個隨機數(shù)),D2-D3(顯示乙的兩個隨機數(shù)),D7(比賽局數(shù));按鍵BTN0(甲投擲篩子),BTN1(乙投擲篩子),BTN7(重新開始游戲);喇叭具體實現(xiàn):1. 通電數(shù)碼管D0,D1,D2,D3均顯示0,伴隨回字形開機動畫。2. 按下BTN0即為甲開始游戲,D7顯示1(局),數(shù)碼管D0,D1分別顯示甲虛擬投擲篩子產(chǎn)生的隨機數(shù)(范圍1-6),D2,D3仍顯示0。3. 按下BTN1即為乙開始游戲,數(shù)碼管D2,D3分別顯示乙虛擬投擲篩子產(chǎn)生的
5、隨機數(shù)(范圍1-6),此時D0,D1,D2,D3都顯示四位隨機數(shù)。4. 第一局結(jié)束后,將甲乙各兩個數(shù)分別作和,且和為7或者11的一方勝利,否則進行第二局;出結(jié)果時,矩陣顯示勝利一方(漢字甲或者乙)并產(chǎn)生提示音;若兩方和均為7或11則進行第二局。5. 第二局開始,D7顯示2(局),重復(fù)以上步驟,即D0,D1顯示甲第二輪的隨機數(shù),D2,D3顯示乙第二局的隨機數(shù),并將甲乙兩數(shù)和與前一局進行比較,若相同即贏得游戲,否則進行第三局。6. 若游戲進行到第五局仍未分出勝負,則進行第六局;第六局勝負判斷為該局隨機數(shù)和大的一方勝,也設(shè)置了和相等即平局的情況。此時顯示贏家,游戲結(jié)束。7. 設(shè)置BTN7為復(fù)位鍵,按
6、下后跳轉(zhuǎn)到初始狀態(tài),此時可以重新開始游戲。第二部分 系統(tǒng)設(shè)計2.1設(shè)計思路第一步:系統(tǒng)層次模塊劃分從系統(tǒng)邏輯結(jié)構(gòu)出發(fā),將系統(tǒng)設(shè)計為5大模塊分別開發(fā)。第一是分頻模塊,第二部分是隨機數(shù)產(chǎn)生模塊,第三部分是游戲比賽模塊,第四部分是數(shù)碼管顯示模塊,第五部分是結(jié)果及點陣顯示模塊。第二步:仿真驗證系統(tǒng)設(shè)計基本完成后,需要對系統(tǒng)主要功能進行仿真驗證,觀察分析輸出波形,更進一步分析基本功能及邏輯是否正確。第三步:下載調(diào)整講仿真后的程序設(shè)計下載到電路板上進行各項功能的測試,并對其進行進一步調(diào)整,確保實驗電路板能夠正常工作。2.2系統(tǒng)結(jié)構(gòu)框圖數(shù)碼管顯示矩陣顯示CLK分頻器喇叭控制器復(fù)位鍵乙按鍵甲按鍵圖2.2 擲篩
7、子游戲系統(tǒng)方框圖啟動是否局數(shù)小于5甲乙按鍵產(chǎn)生隨機數(shù)甲乙按鍵產(chǎn)生隨機數(shù)計算甲乙隨機數(shù)和S21、S22計算甲乙隨機數(shù)和S1、S2記錄局數(shù)否否和與前一局比較是否相同S1或S2有一個是7或11是是甲乙按鍵產(chǎn)生隨機數(shù)計算甲乙隨機數(shù)和S61、S62點陣顯示贏家復(fù)位比較S61和S62大小圖2.3 擲篩子游戲系統(tǒng)流程圖2.3 系統(tǒng)分塊設(shè)計 本實驗完成分為五大模塊,依次為分頻模塊,隨機數(shù)產(chǎn)生模塊,游戲比賽模塊,數(shù)碼管顯示模塊,結(jié)果及點陣顯示模塊。2.3.1分頻器模塊:采用多分頻。系統(tǒng)時鐘CLK分頻器1用于數(shù)碼管顯示的時鐘分頻器2系統(tǒng)時鐘用于點陣掃描顯示的時鐘分頻器3圖2.3.1 分頻器示意圖部分分頻代碼如下:
8、entity fenpin isport(clk0:in std_logic;clk:out std_logic);end fenpin;architecture one of fenpin issignal count:integer range 0 to 10;begin p0:process(clk0) begin if(falling_edge(clk0)then if count=10 then count<=0; else count<=count+1; end if; end if;end process p0;p1:process(count) begin if c
9、ount=10 then clk<='1' else clk<='0' end if; end process p1;end one;2.3.2隨機數(shù)產(chǎn)生模塊:利用產(chǎn)生M序列的原理模擬出隨機數(shù)的產(chǎn)生,由于以為隨機數(shù)要求范圍為1-6,故取 t1(0)到 t1(2)三位,且將最高位 t1(3)賦值為0即可。且當t1=“0000”或“0111”時,取上一時刻的取值,保證產(chǎn)生的數(shù)字為1-6之間。p1:process(clk) begin if tmp1="000000000000000000000"then tmp1<="
10、000000000000000000001" elsif clk'event and clk='1' then tmp1(0)<=tmp1(20) xor tmp1(10) xor tmp1(2) xor tmp1(0); -產(chǎn)生M序列 for i in 1 to 20 loop tmp1(i)<=tmp1(i-1); end loop; t1(0)<=tmp1(0); t1(1)<=tmp1(1); t1(2)<=tmp1(2); -取三位 t1(3)<='0' -最高位賦值0即可 if t1 /= &qu
11、ot;0000" and t1 /= "0111" then q_out1<=t1(3 downto 0); end if; end if; end process p1;到此即完成了一位隨機數(shù)的輸出。其它三位隨機數(shù)產(chǎn)生原理相同。2.3.3游戲比賽模塊:游戲比賽全過程的實現(xiàn)按局數(shù)來劃分,由于每一局的比賽規(guī)則略有差異,所以在這里分別劃分為1到6局分別表示六局比賽的進行。舉例FIRST為第一局比賽過程:a:process(clk)beginif (clk'event and clk='1')then -分頻時鐘沿觸發(fā)if(reset=
12、39;1')thenkk<="00" -kk表示比賽結(jié)果,“00”是沒結(jié)果 elseif(ok=1)thenif (in1 ="0111" or in1="1011") And (in2 /="0111" and in2/="1011") then kk <= "01" kk <= "01" -kk=“01”乙勝 elsif (in2 ="0111" or in2="1011") And (
13、in1 /="0111" and in1/="1011") then kk <= "11" kk <= "11" -kk=“11”乙勝else kk<="00" kk <= "00" g1<=in1; g2<=in2;end if; end if; end if;end if;outj<=g1;outy<=g2; out1<=kk; end process a;計算局數(shù)累加的模塊:舉例第六局比賽過程:architectur
14、e behaviored of six issignal kk:std_logic_vector(1 downto 0);begina:process(clk)beginif (clk'event and clk='1')thenif(reset='1')thenkk<="00"else if(ok=6)then -判斷此時是第六局if in1>in2 then -判斷甲乙隨機數(shù)和哪個大 kk <= "11" kk <= "11"elsif in1<in2 then
15、kk<= "01" kk <= "01"else kk<="10" kk <= "10"end if;end if;end if;end if;out1<=kk; -輸出結(jié)果end process a;end behaviored;2.3.4數(shù)碼管顯示模塊:數(shù)碼管顯示部分的模塊很多,部分代碼如下:ARCHITECTURE one OF shumaguan IS signal a:integer range 0 to 5:=0;BEGINprocess(clk)begin if (ris
16、ing_edge(clk) then if a=5 then a<=0; else a<=a+1; end if; end if;end process; PROCESS (a,s00,s11,s22,s33,s77) BEGIN CASE a IS WHEN 0=>s<=s00;cout<="011111" WHEN 1=>s<=s11;cout<="101111" WHEN 2=>s<=s22;cout<="110111" -位置為陰極“0”的時候該數(shù)碼管亮。 WH
17、EN 3=>s<=s33;cout<="111011" WHEN 4=>s<=s77;cout<="111101" WHEN 5=>s<="1111110"cout<="111110" when others=>s<="1111110" cout<="000000" END CASE;END PROCESS;END one;原理圖如下:圖2.3.4 數(shù)碼管原理圖2.3.5點陣管顯示模塊: case c i
18、s when"01111111"=>lie<="11111111" when"10111111"=>lie<="10011001" when"11011111"=>lie<="11111111" when"11101111"=>lie<="10011001" when"11110111"=>lie<="11111111" when&quo
19、t;11111011"=>lie<="10011001" when"11111101"=>lie<="00011000" when"11111110"=>lie<="00011000" when others=>lie<="00000000" -點陣顯示“甲”勝利 end case; when "11"=> buf<='1' -蜂鳴器響2.4系統(tǒng)仿真驗證系統(tǒng)仿真分為兩個步
20、驟進行,首先是關(guān)鍵模塊的仿真,驗證子系統(tǒng)功能的正確性,然后是綜合仿真,驗證整個系統(tǒng)的功能。仿真環(huán)境是QuartusII 7.2。下面是對結(jié)果的仿真波形和分析如下:情況一: 第一局結(jié)束后產(chǎn)生結(jié)果 情況二:第六局結(jié)束后產(chǎn)生結(jié)果,伴隨點陣顯示 圖2.4第六局產(chǎn)生結(jié)果的系統(tǒng)仿真圖說明:reset是復(fù)位鍵;cout1和2是甲的兩個隨機數(shù),cout3和cout4是乙產(chǎn)生的兩個隨機數(shù);ok表示局數(shù);outall表示游戲結(jié)果:甲勝是01、乙勝是11、無結(jié)果是00、平局是10。因為是四個結(jié)果所以用兩位來表示全部情況。圖2.4第六局產(chǎn)生結(jié)果的點陣掃描圖(甲勝)第三部分 結(jié)果與分析3.1元器件和儀表清單名稱數(shù)量作用
21、FPGA實驗板MAXII EPM1270T144C51下載測試VGA顯示控制器臺式電腦1在QuartusII8.2軟件環(huán)境中編寫VHDL描述代碼,進行仿真驗證和分析3.2器件資源分析在設(shè)計階段,對系統(tǒng)描述采用過多種方式,嘗試了多種描述,代碼的長度在增加,模塊在增多,但系統(tǒng)穩(wěn)定性和可擴展性也在增強,層次結(jié)構(gòu)和模塊設(shè)計也更加完善。設(shè)計之初對資源使用沒有多少概念,時常以軟件的思想描述硬件,在描述中使用過嵌套多層的IF-ELSE語句,產(chǎn)生很長的選擇器,降低了模塊的可靠性,增加處理延時。隨著設(shè)計的深入,加上反復(fù)求精的過程磨練,逐步對硬件描述綜合出的實際電路形式有了更多的理解,對延時和資源占用有了初步概念
22、。一個顯見的結(jié)論是描述代碼的長度和綜合后的電路形式與資源占用無必然聯(lián)系。需要關(guān)注編譯器在綜合時如何將VHDL行為級描述轉(zhuǎn)化為結(jié)構(gòu)化的門級電路,才能分析清楚資源占用率和電路結(jié)構(gòu)。行為級描述可能與實際綜合的電路產(chǎn)生不一致,需要謹慎對待。圖3.1是QuartusII編譯工程后的綜合報告。邏輯單元占用率29%。3.3故障和問題分析實驗中由于仔細設(shè)計了系統(tǒng)邏輯、詳細劃分了子模塊、各模塊的實現(xiàn)都仔細進行了描述,故沒有出現(xiàn)太多的故障,就在于自己不停地調(diào)整。 實驗中曾經(jīng)最困擾我的就是在分頻器的使用上。由于各個部分的最佳工作分頻不近相同,物理分頻是確定的,而自己只能一點點嘗試分出理想工作的頻率,進行各種下載測試
23、,最終才能使數(shù)碼管和點陣的顯示不出問題,同時也減少了按鍵帶來的抖動錯誤。 開始時由于設(shè)計綜合實驗的經(jīng)驗不足,程序設(shè)計比較混亂,而且也沒有劃分模塊,導致最后邏輯呈現(xiàn)特別不清楚,使自己在核對檢查程序的時候遇到了各種問題。隨后在教材中學習模塊的清晰劃分,才使程序易于理解與檢查,大大提高了改錯效率。第四部分 總結(jié)與結(jié)論4.1實驗結(jié)論本實驗歷時三周,分為一老師講授系統(tǒng)設(shè)計方法、綜合題目要求,多次開放實驗VHDL設(shè)計,課堂答辯成果驗收三個步驟。經(jīng)過不懈努力,最后系統(tǒng)的基本功能得以實現(xiàn),同時附加功能也有所擴展。4.2總結(jié)體會這次數(shù)電綜合實驗帶給我的遠遠不止步于完成了一個數(shù)字電路綜合實驗,它更是一次全方位綜合
24、能力的擴展。最初的選這個實驗題目純是因為興趣,以為自己做出這個游戲的過程會非常好玩。結(jié)果在初次跟小組成員討論時就發(fā)現(xiàn)想要實現(xiàn)這個游戲系統(tǒng)的設(shè)計,還是有很多困難需要解決的。而真正進入設(shè)計的時候,老師先讓我們畫出框圖,流程圖等等,那個時候我們都不太清楚究竟是如何設(shè)計的,邏輯是如何實現(xiàn)的,所以只是憑借自己的想法畫的,現(xiàn)在看來真的是對VHDL語言了解的不夠,對這種硬件設(shè)計知之甚少。更為準確的流程以及邏輯關(guān)系是在開發(fā)階段一點點清楚的,這也就是我們真正動手設(shè)計所學到最主要的一點。開發(fā)到一半的時候,有一段時間自己的思路特別混亂,因為沒有做過這么大的實驗,也沒學會模塊劃分,有時候自己編的東西隔一天看、或者經(jīng)過
25、反復(fù)修改,自己回頭看都不是很清楚。這時候模塊的劃分和程序的備注就顯得十分重要了。這次實驗的完成,不得不說是對自己程序設(shè)計能力的又一大提升。期間克服了很多設(shè)計上的困難,真正的深入硬件內(nèi)部了解系統(tǒng)功能的實現(xiàn)過程,為以后自己的實驗和開發(fā)提供有益的參考。同時也學會了跳出局部的程序,以一種宏觀的角度看整個系統(tǒng)的實現(xiàn)。這是之前完成小的設(shè)計實驗沒有體會過的。最后還要感謝老師和小組的同學,給了我很多思路上的指點。有問題拿出來大家一起討論,問題解決的才更快,收獲的也更多。以上就是我全部的報告內(nèi)容。第 46頁第五部分 附錄部分5.1VHDL源代碼-SHUCHU(主程序)library ieee;use ieee.
26、std_logic_1164.all;use ieee.numeric_std.all;use ieee.std_logic_signed.all;entity shuchu is port( clk:in std_logic; an:in std_logic; bn:in std_logic;reset:in std_logic; lie:out std_logic_vector(7 downto 0); hang:out std_logic_vector(7 downto 0); cout: out Std_logic_vector(5 DOWNTO 0) ;s:out Std_logic
27、_vector(6 DOWNTO 0); buf:out std_logic ); end shuchu;architecture behaviored of shuchu iscomponent xulie is port(clk:in std_logic; q_out1:out std_logic_vector(3 downto 0); q_out2:out std_logic_vector(3 downto 0); q_out3:out std_logic_vector(3 downto 0); q_out4:out std_logic_vector(3 downto 0); end c
28、omponent; component fenpin port(clk0:in std_logic; clk:out std_logic); end component; component add is port( clk: in std_logic; reset:in std_logic; an:in std_logic; bn:in std_logic; in_1: in std_logic_vector(3 downto 0); in_2: in std_logic_vector(3 downto 0); in_3: in std_logic_vector(3 downto 0); i
29、n_4: in std_logic_vector(3 downto 0); out_1: out std_logic_vector(3 downto 0); out_2: out std_logic_vector(3 downto 0); out_3: out std_logic_vector(3 downto 0); out_4: out std_logic_vector(3 downto 0); out_jia:out std_logic_vector(3 downto 0); out_yi: out std_logic_vector(3 downto 0); ok:out integer
30、 range 0 to 10; cuowu:out std_logic); end component; component first port(clk:in std_logic; reset:in std_logic; ok:in integer; in1:in std_logic_vector(3 downto 0); in2:in std_logic_vector(3 downto 0); outj:out std_logic_vector(3 downto 0); outy:out std_logic_vector(3 downto 0); out1:out std_logic_ve
31、ctor(1 downto 0) ); end component;component second port(clk:in std_logic; reset:in std_logic; ok:in integer; in1:in std_logic_vector(3 downto 0); in2:in std_logic_vector(3 downto 0); asave:in std_logic_vector(3 downto 0); bsave:in std_logic_vector(3 downto 0); out1:out std_logic_vector(1 downto 0) )
32、;end component;component thirdport(clk:in std_logic; reset:in std_logic; ok:in integer; in1:in std_logic_vector(3 downto 0); in2:in std_logic_vector(3 downto 0); asave:in std_logic_vector(3 downto 0); bsave:in std_logic_vector(3 downto 0); out1:out std_logic_vector(1 downto 0) );end component;compon
33、ent fourthport(clk:in std_logic; reset:in std_logic; ok:in integer; in1:in std_logic_vector(3 downto 0); in2:in std_logic_vector(3 downto 0); asave:in std_logic_vector(3 downto 0); bsave:in std_logic_vector(3 downto 0); out1:out std_logic_vector(1 downto 0) );end component;component fivthport(clk:in
34、 std_logic; reset:in std_logic; ok:in integer; in1:in std_logic_vector(3 downto 0); in2:in std_logic_vector(3 downto 0); asave:in std_logic_vector(3 downto 0); bsave:in std_logic_vector(3 downto 0); out1:out std_logic_vector(1 downto 0) );end component;component six port(clk:in std_logic; reset:in s
35、td_logic; ok:in integer; in1:in std_logic_vector(3 downto 0); in2:in std_logic_vector(3 downto 0); out1:out std_logic_vector(1 downto 0) );end component;component xianshi1port(aout1:in std_logic_vector(3 downto 0); aout2:in std_logic_vector(3 downto 0); bout1:in std_logic_vector(3 downto 0); bout2:i
36、n std_logic_vector(3 downto 0); ok:in integer; s00:out Std_logic_vector(6 DOWNTO 0); s11:out Std_logic_vector(6 DOWNTO 0); s22:out Std_logic_vector(6 DOWNTO 0); s33:out Std_logic_vector(6 DOWNTO 0); s77:out Std_logic_vector(6 DOWNTO 0) ); end component; component shumaguan PORT(clk:in std_logic; s00
37、:in Std_logic_vector(6 DOWNTO 0); s11:in Std_logic_vector(6 DOWNTO 0); s22:in Std_logic_vector(6 DOWNTO 0); s33:in Std_logic_vector(6 DOWNTO 0); s77:in Std_logic_vector(6 DOWNTO 0); s:out Std_logic_vector(6 DOWNTO 0); cout:out std_logic_vector(5 downto 0) ); end component; component jg port( clk:in
38、std_logic; reset:in std_logic; ok:in integer; out1: in std_logic_vector(1 downto 0); out2: in std_logic_vector(1 downto 0); out3: in std_logic_vector(1 downto 0); out4: in std_logic_vector(1 downto 0); out5:in std_logic_vector(1 downto 0); out6:in std_logic_vector(1 downto 0); outall1:out std_logic_
39、vector(1 downto 0) ); end component; component yinji PORT( cuowu: IN Std_logic; xin: in std_logic_vector(1 downto 0); clc: IN Std_logic; lie:out std_logic_vector(7 downto 0); hang:out std_logic_vector(7 downto 0); buf:out std_logic); end component; signal a: std_logic_vector(3 downto 0);signal b: st
40、d_logic_vector(3 downto 0);signal c: std_logic_vector(3 downto 0);signal d: std_logic_vector(3 downto 0);signal e: std_logic_vector(3 downto 0);signal f: std_logic_vector(3 downto 0);signal g: std_logic_vector(3 downto 0);signal h: std_logic_vector(3 downto 0);signal i: std_logic_vector(3 downto 0);
41、signal j: std_logic_vector(3 downto 0);signal k: std_logic_vector(3 downto 0);signal l: std_logic_vector(3 downto 0); signal out1: std_logic_vector(1 downto 0); signal out2: std_logic_vector(1 downto 0); signal out3: std_logic_vector(1 downto 0); signal out4: std_logic_vector(1 downto 0); signal out
42、5: std_logic_vector(1 downto 0); signal out6:std_logic_vector(1 downto 0); signal countall1:std_logic_vector(1 downto 0); signal s00:std_logic_vector(6 downto 0); signal s11:std_logic_vector(6 downto 0); signal s22:std_logic_vector(6 downto 0); signal s33:std_logic_vector(6 downto 0); signal s77:std
43、_logic_vector(6 downto 0); signal clk0 :std_logic; signal cuowu:std_logic;signal ok: integer range 0 to 10;beginu0:fenpin port map(clk,clk0);u1:xulie port map (clk0,a,b,c,d);u2:add port map (clk0,reset,an,bn,a,b,c,d,i,j,k,l,e,f,ok,cuowu);u3:xianshi1 port map (i,j,k,l,ok,s00,s11,s22,s33,s77);u4:shuma
44、guan port map(clk,s00,s11,s22,s33,s77,s,cout);u5:first port map(clk0,reset,ok,e,f,g,h,out1);u6:second port map(clk0,reset,ok,e,f,g,h,out2);u7:third port map(clk0,reset,ok,e,f,g,h,out3);u8:fourth port map(clk0,reset,ok,e,f,g,h,out4);u9:fivth port map(clk0,reset,ok,e,f,g,h,out5);u10:six port map(clk0,
45、reset,ok,e,f,out6);u11:jg port map(clk0,reset,ok,out1,out2,out3,out4,out5,out6,countall1);u12:yinji port map(cuowu,countall1,clk,lie,hang,buf);end behaviored;-FENPINlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_signed.all;entity fenpin isport(clk0:in std_logic; clk:out std_logic);end f
46、enpin;architecture one of fenpin issignal count:integer range 0 to 10;begin p0:process(clk0)beginif(falling_edge(clk0)then if count=7 then count<=0; else count<=count+1; end if;end if;end process p0;p1:process(count)beginif count=7 then clk<='1'else clk<='0'end if;end pro
47、cess p1;end one;-XULIE(生成隨機數(shù))library ieee;use ieee. std_logic_1164.all;use ieee.numeric_std.all;use ieee.std_logic_signed.all;entity xulie is port(clk:in std_logic; q_out1:out std_logic_vector(3 downto 0); q_out2:out std_logic_vector(3 downto 0); q_out3:out std_logic_vector(3 downto 0); q_out4:out s
48、td_logic_vector(3 downto 0); end xulie;architecture behaviorel of xulie is signal t1:std_logic_vector(3 downto 0); signal t2:std_logic_vector(3 downto 0); signal t3:std_logic_vector(3 downto 0); signal t4:std_logic_vector(3 downto 0); signal tmp1:std_logic_vector(20 downto 0):="0000000000000000
49、00001" signal tmp2:std_logic_vector(23 downto 0):="000000000000000000000001" signal tmp3:std_logic_vector(26 downto 0):="000000000000000000000000001" signal tmp4:std_logic_vector(21 downto 0):="0000000000000000000001" begin p1:process(clk) begin if tmp1="00000
50、0000000000000000"then tmp1<="000000000000000000001" elsif clk'event and clk='1' then tmp1(0)<=tmp1(20) xor tmp1(10) xor tmp1(2) xor tmp1(0); for i in 1 to 20 loop tmp1(i)<=tmp1(i-1); end loop; t1(0)<=tmp1(0); t1(1)<=tmp1(1); t1(2)<=tmp1(2); t1(3)<='
51、;0' if t1 /= "0000" and t1 /= "0111" then q_out1<=t1(3 downto 0); end if; end if; end process p1; p2:process(clk) begin if tmp2="000000000000000000000000"then tmp2<="000000011100000000000001" elsif clk'event and clk='1' then tmp2(0)<=tmp2(23) xor tmp2(20) xor tmp2(11) xor tmp2(6) xor tmp2(0); for i in 1 to 23 loop tmp2(i)<=tmp2(i-1); end loop; t2(0)<=tmp2(0); t2(1)<=tmp2(1); t2(2)<=tmp2(2); t2(3)<='0' if t2 /= "0000" and t2 /= "0111" then q_out2<=t2(3 down
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合股開餐廳合同范本
- 衛(wèi)生清潔合同范本
- 勞務(wù)派遣合同范本2003
- 個人供貨客戶合同范本
- 合股認購合同范本
- 合伙協(xié)議書范本合同范本
- 叉車工聘用合同范本
- 員工合同范例送水
- 傳單兼職人員合同范本
- 劇組財務(wù)合同范本
- 精神病醫(yī)院管理制度
- 化工廠中控DCS系統(tǒng)崗位職責
- 唯物史觀指導初中歷史教學
- 2023年同等學力研究生考試教育學試卷附詳細答案
- 出口貨物稅收函調(diào)系統(tǒng)課件
- 初中物理教育科學八年級下冊第八章力與運動-力的合成PPT
- 消渴病中醫(yī)護理的方案課件
- 抗抑郁藥物神經(jīng)遞質(zhì)的藥理課件
- 特殊兒童教育與康復(fù)課件
- 水質(zhì)分析題庫
- 深靜脈血栓形成的診斷和治療指南(第三版)解讀資料講解課件
評論
0/150
提交評論