




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數字電路與邏輯設計實驗報告學院:電子工程學院班級: 2011211203學號: 2011210971班內序號: 22姓名:郭一鳴指導老師:陳凌霄目錄一、課題名稱4二、摘要4三、設計任務要求4四、設計思路,總體結構框圖41、基本框架42、在點陣上顯示一個字或圖案53、控制亮度53.1脈沖寬度調制(PWM)53.2 亮度54、控制顏色65、實現三種模式的滾動75.1狀態75.2如何存儲需要譯碼的字符75.3如何進行譯碼76、總體框圖8五、控制器部分的狀態轉移圖和流程圖81、狀態轉移圖92、流程圖9六、總體電路和分塊電路的設計111、總體電路112、分塊電路11(1)pwm調制器11(2)數據選擇器
2、(mux)13(3)譯碼器(translate)14(4)其他模塊20七、所實現的功能說明211、已完成的基本功能212、已完成的擴展功能213、器件資源占用情況214、關鍵波形仿真圖21(1)pwm調制器21(2)數據選擇器22(3)譯碼器22八、故障及問題分析28九、總結29十、所用元器件及測試儀表清單29十一、完整源程序291、總體原理圖設計292、防抖模塊293、一級分頻器(pwm調制器)304、二級分頻器325、三級分頻器326、模2計數器337、模4計數器348、模8計數器349、滾動狀態計數器(模4模32計數器組合)3510、數據選擇器3611、譯碼器36十二、參考文獻43歡迎學
3、弟學妹下載!一、課題名稱雙色點陣顯示控制器二、摘要本實驗使用在QuartusII9.1的軟件基礎上,使用VHDL設計輸入和原理圖設計輸入混合編程,設計了一個8×8雙色點陣顯示器,實現了控制固定圖形的亮度和顏色以及多個字母不同模式的滾動且同時手動、自動變色的功能。關鍵詞:數字電路,雙色點陣,VHDL,滾動三、設計任務要求設計實現一個8×8 雙色點陣顯示控制器。基本要求:1、固定紅色顯示一個漢字或圖形,顯示亮度4 級可調,用一個btn按鈕實現亮度調節,亮度變化視覺效果要盡量明顯。2、用從紅到綠8 級漸變色顯示一個固定漢字或圖形。3、分別用單字循環顯示、左右滾動顯示、上下滾動顯示
4、三種顯示方式單色顯示四個漢字或圖形,顯示過程中,顯示方式用一個btn按鍵進行切換。4、顯示的圖形或漢字要盡量飽滿美觀。提高要求:1、滾動顯示過程中實現四種顯示顏色的自動變換,顏色變化視覺效果要盡量明顯。2、自擬其它功能。四、設計思路,總體結構框圖1、基本框架時鐘輸入,分頻至掃描頻率,掃描頻率控制掃描計數器,譯碼器將計數器狀態譯成對應輸出輸出clkCnt8譯碼器分頻器2、在點陣上顯示一個字或圖案在任何一個時刻,點陣中同時只可能有一行亮,為了讓人眼看到穩定的八行八列圖形,必須利用人眼的視覺暫留,讓八行循環點亮并且達到一定頻率。因為人眼對于閃爍頻率在50HZ以上的光源會看到是一直亮的,故對于八行的點
5、陣,點亮頻率至少需要50×8HZ才能保證人眼看到穩定的圖案。因此,可以知道基本框架中,分頻器要把實驗板上的50MHZ的時鐘分到400HZ以上,這里可選擇1000HZ,控制模8計數器,譯碼器將模8計數器的計數值譯成row、colr管腳上的高低電平信號。3、控制亮度3.1脈沖寬度調制(PWM)控制亮度需要有占空比不同的波,以這些信號去控制點亮的時間。生成這種信號,我們必須考慮以下幾個問題:頻率是多少。在不進行亮度控制時,模8計數器的每一個值的持續時間對應某一行亮的時間,而我們現在要控制這個時間,那些占空比不同的波的周期就必須和模8計數器的周期一致,否則必然造成混亂。而模8計數器對應著掃描
6、頻率,也就是第一級分頻器分出的頻率,那些占空比不同的波也可以作為第一級分頻器輸出的時鐘信號,故根據這里的分析我們可以將第一級分頻器和脈沖寬度調制器合并成一個模塊。占空比多大。我們第一個功能需要4級亮度,第二個功能需要8級漸變色,故可選擇生成占空比14%、28%、42%、56%、70%、84%六種占空比的時鐘信號,占空比為0%和100%可以直接在程序中對電平賦0或1不需要生成。3.2亮度用占空比不同的時鐘信號改變點亮時間以控制亮度。在譯碼部分增加一個判斷條件,如果控制此時亮度的占空比的時鐘信號電平為1,則正常譯碼;如果此時電平為0,那么對管腳colr或colg賦八位低電平向量“00000000”
7、。Pwm當外部輸入量不同時,是占空比不同的時鐘信號。Shuzu2是8×8數組。4、控制顏色用不同占空比的時鐘信號分別控制每一行colr、colg點亮的時間,使colr從第一行到第八行點亮時間依次減少(1000%),使colg從第一行到第八行點亮時間依次增加(0100%)。由此即可出現由紅到綠的八級漸變色。Pwm16,是占空比1484%的時鐘信號。5、實現三種模式的滾動5.1狀態首先需要明確的是,每滾動一次,也即點陣圖案每變化一次,就對應一個狀態。我們要想知道某一時刻要顯示出什么樣的圖案,就必須知道當前是第幾個狀態。所以我們需要一個狀態計數器,以它的計數值去控制當前顯示哪種圖案。對于單
8、字循環,每次顯示一個字,MING四個字母對應4個狀態,需要模4計數器。對于左右滾動和上下滾動,每次移動一行或者一列,對應32個狀態,需要模32計數器。因為滾動的頻率三者都相同,可以考慮將模4計數器和模32計數器合在一起以減少模塊數目。5.2如何存儲需要譯碼的字符點陣上的每一個圖案對應8個行向量,單字循環4個狀態對應32個行向量,左右滾動和上下滾動對應256個行向量。如果在程序中直接用每一個狀態對應一個when、case語句去譯碼,工程量會非常大,而且不易修改,不易擴展。考慮把這4個字母存儲在一個二維數組中,為了方便左右滾動和上下滾動的譯碼,將這四個字母存在8×39(最后7列是第一個字
9、母M的前7列)和39×8數組中(最后7行是第一個字母M的前7行)。5.3如何進行譯碼當我們譯碼時,可以根據當前狀態計數器的計數值動態引用數組中的行向量。這樣譯碼部分只需要8行代碼即可,而靜態引用的話,左右和上下滾動每種就需要寫256行。以下是程序左右滾動部分的截圖,以此為例簡要介紹動態引用數組中的行向量。8×39數組,存儲,縱坐標從下至上07,橫坐標從左至右380,即坐標橫縱均最大的點在左上角。其中Move是狀態計數器的值,031。對于cnt8=0,move=0點陣第一行顯示的是數組的第一行的18(標號3831),而當cnt8=0不變,move=1時,點陣第一行29列(標號
10、3730)。根據move值增大依次譯碼數組中后面的列。6、總體框圖五、控制器部分的狀態轉移圖和流程圖本程序中,譯碼部分是主要的控制器,根據輸入量的不同作出不同種類的譯碼。1、狀態轉移圖Function twoFunction oneSwt=”01”Swt=”00”Swt=”01”Swt=”11”Swt=”10”Swt=”00”Swt=”10”Swt=”10”Swt=”01”Swt=”11”Swt=”10”Swt=”00”Function threeFunction fourSwt為兩位撥碼開關,根據swt值的不同可以從任意一個狀態直接跳到其他任意狀態Function one:顯示固定圖形或字,
11、可四級亮度調節Function two:顯示固定圖形或字,由紅至綠八級漸變色Function three:三種滾動模式Function four:三種滾動模式且滾動中自動變色2、流程圖開始Swt的值變化Swt=”00”?Y功能一NSwt=”01”?Y功能二Swt的值變化NSwt=”10”?Y功能三Swt的值變化Swt的值變化N功能四六、總體電路和分塊電路的設計1、總體電路2、分塊電路上述總體電路中共使用10種模塊,其中最關鍵的三種分別是:(1)pwm調制器libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all
12、;entitypwm isport(clk:IN STD_LOGIC; -實驗板上50MHZ時鐘輸入 pwm1:out std_logic; -以下是六種頻率為1000HZ,占空比從14%84%的波 pwm2:outstd_logic; pwm3:outstd_logic; pwm4:outstd_logic; pwm5:outstd_logic; pwm6:outstd_logic );endpwm;architecture project of pwm isbeginprocess(clk)-pwm,dividervariablecount:integer range 0 to 49999
13、;begin if clk' event and clk='1' then -計數器,其模值決定分頻比if count=49999 thencount:=0;else count:=count+1; end if;end if;ifclk' event and clk='1' then -pwm1if count<7000 thenpwm1<='1'else pwm1<='0'end if;end if;ifclk' event and clk='1' then -pwm2
14、if count<14000 thenpwm2<='1'else pwm2<='0'end if;end if;ifclk' event and clk='1' then -pwm3if count<21000 thenpwm3<='1'else pwm3<='0'end if;end if;ifclk' event and clk='1' then -pwm4-50%if count<28000 thenpwm4<='1
15、9;else pwm4<='0'end if;end if;ifclk' event and clk='1' then -pwm5if count<35000 thenpwm5<='1'else pwm5<='0'end if;end if;ifclk' event and clk='1' then -pwm6if count<42000 thenpwm6<='1'else pwm6<='0'end if;end if;end
16、 process;end project;(2)數據選擇器(mux)use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity mux2 isport(clk1:in std_logic; -低頻時鐘輸入(0.5HZ)clk2:in std_logic;-高頻時鐘輸入(2HZ)btn:instd_logic;-按鍵脈沖輸入cnt2:in integer range 0 to 1;swt:instd_logic_vector(1 downto 0);clkout:outstd_logic);-輸出時鐘end mux2;arc
17、hitecture a of mux2 isbeginprocess(clk1,clk2,btn,swt)begincase swt is只對功能三四有效when "10"=>clkout<=btn;-當功能三時,輸出時鐘為btn脈沖when "11"=>if cnt2=0 then clkout<=clk1;else clkout<=clk2;end if;-功能四時,根據cnt2值不同,輸出低頻、高頻時鐘when others => clkout<='0'end case;end proces
18、s;end a;(3)譯碼器(translate)libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity translate isport( pwm1:IN STD_LOGIC; pwm2:IN STD_LOGIC; pwm3:IN STD_LOGIC; pwm4:IN STD_LOGIC; pwm5:IN STD_LOGIC; pwm6:IN STD_LOGIC; cnt8:IN integer range 0 to 7; cnt4:IN integer range 0 to 3;swt:IN
19、std_logic_vector(1 downto 0);move:IN integer range 0 to 31;-狀態計數器值,模32 move1:IN integer range 0 to 3;-狀態計數器值,模4change:IN integer range 0 to 3;-變色狀態計數器,模4row:outstd_logic_vector(7 downto 0);colr:outstd_logic_vector(7 downto 0);colg:outstd_logic_vector(7 downto 0) );end translate;architecture project
20、of translate issignal tchange1:std_logic;signal tchange2:std_logic;signalpwm:std_logic;type r is array(7 downto 0) of std_logic_vector(38 downto 0);-定義8×39二維數組signal shuzu:r; -8*39定義數組信號type r1 is array(38 downto 0) of std_logic_vector(7 downto 0);-定義39×8二維數組signal shuzu1:r1; -39*8定義數組信號ty
21、pe r2 is array(7 downto 0) of std_logic_vector(7 downto 0);-定義8×8數組signal shuzu2:r2; -8*8定義數組信號beginshuzu<=( -8*39賦值);shuzu1<=( -39*8賦值"10000001","11000011","10100101","10011001","10000001","10000001","10000001","1
22、0000001","00111100","00011000","00011000","00011000","00011000","00011000","00011000","00111100","10000001","11000001","10100001","10010001","10001001","1000010
23、1","10000011","10000001","01111110","10000001","10000000","10000000","10001111","10001001","10000001","01111110","10000001","11000011","10100101","10011001"
24、;,"10000001","10000001","10000001");shuzu2<=("00111100", 8*8賦值"01111110", "11111111", "10011001", "11111111", "11011011", "01100110", "00111100" );process(cnt8)-control row vectorbegin CA
25、SE cnt8 IS -控制每一行能夠亮的時刻when 0 =>row<="01111111"when 1 =>row<="10111111"when 2 =>row<="11011111"when 3 =>row<="11101111"when 4 =>row<="11110111"when 5 =>row<="11111011"when 6 =>row<="11111101&qu
26、ot;when 7 =>row<="11111110"when others =>row<="11111111"end case;end process ;process(change,swt,pwm5,pwm2) -control move colorbegin case change is -根據變色狀態計數器值的不同,使tchange1和tchange2成為不同占空比的波,分別控制colr、colg點亮時長when 0=>tchange1<='1'tchange2<='0'w
27、hen 1=>tchange1<=pwm5;tchange2<=pwm2;when 2=>tchange1<=pwm2;tchange2<=pwm5;when 3=>tchange1<='0'tchange2<='1'when others => tchange1<='1'tchange2<='0'end case;end process;process(cnt4,pwm1,pwm3,pwm5) - control lightbegin case cnt4 i
28、s -根據cnt4記錄的按鍵次數,使pwm成為占空比不同的波,控制固定圖形的4級亮度when 0=> pwm<=pwm1;when 1=> pwm<=pwm3;when 2=> pwm<=pwm5;when 3=> pwm<='1'when others => pwm<='1'end case; end process; process(cnt8,cnt4,swt,pwm,pwm1,pwm2,pwm3,pwm4,pwm5,pwm6,move,move1,tchange1,tchange2,shuzu,s
29、huzu1,shuzu2)-function 1begin if swt="00" then -function one四級亮度colg<="00000000"ifpwm='1' thencase cnt8 iswhen 0 => colr <= shuzu2(7); when 1 => colr <= shuzu2(6); when 2 => colr <= shuzu2(5); when 3 => colr <= shuzu2(4); when 4 => colr <=
30、 shuzu2(3); when 5 => colr <= shuzu2(2); when 6 => colr <= shuzu2(1); when 7 => colr <= shuzu2(0); when others => colr <= "00000000"end case;elsecolr<="00000000"end if;end if; if swt="01" then -function 2 colr,colg八級漸變色 CASE cnt8 ISwhen 0 =>
31、;colr<=shuzu2(7);colg<="00000000"when 1 =>if pwm6='1' then colr<=shuzu2(6);else colr<="00000000"end if;if pwm1='1' then colg<=shuzu2(6);else colg<="00000000"end if;when 2 =>if pwm5='1' then colr<=shuzu2(5);else colr<
32、="00000000"end if;if pwm2='1' then colg<=shuzu2(5);else colg<="00000000"end if;when 3 =>if pwm4='1' then colr<=shuzu2(4);else colr<="00000000"end if;if pwm3='1' then colg<=shuzu2(4);else colg<="00000000"end if;when
33、4 =>if pwm3='1' then colr<=shuzu2(3);else colr<="00000000"end if;if pwm4='1' then colg<=shuzu2(3);else colg<="00000000"end if;when 5 =>if pwm2='1' then colr<=shuzu2(2);else colr<="00000000"end if;if pwm5='1' then c
34、olg<=shuzu2(2);else colg<="00000000"end if;when 6 =>if pwm1='1' then colr<=shuzu2(1);else colr<="00000000"end if;if pwm6='1' then colg<=shuzu2(1);else colg<="00000000"end if;when 7 =>colr<="00000000"colg<=shuzu2(0)
35、;when others =>colr<="00000000"colg<="00000000"end case;end if; if swt="10" or swt="11" then -function three ,four 功能三四使用相同的譯碼部分,不同點在于變色計數器的驅動時鐘不同。功能三中,變色時鐘是btn,每按鍵一次,可改變一種顏色;功能四中,變色時鐘是低頻、高頻時鐘,自動變色。case cnt4 is when 0=> -three-one單字循環colg<="
36、;00000000"colr<="00000000"if tchange1='1' then case cnt8 is -紅色when 0 => colr <= shuzu(7)(38-8*move1) downto (31-8*move1); when 1 => colr <= shuzu(6)(38-8*move1) downto (31-8*move1); when 2 => colr <= shuzu(5)(38-8*move1) downto (31-8*move1); when 3 =>
37、colr <= shuzu(4)(38-8*move1) downto (31-8*move1); when 4 => colr <= shuzu(3)(38-8*move1) downto (31-8*move1); when 5 => colr <= shuzu(2)(38-8*move1) downto (31-8*move1); when 6 => colr <= shuzu(1)(38-8*move1) downto (31-8*move1); when 7 => colr <= shuzu(0)(38-8*move1) down
38、to (31-8*move1); when others => colr <= "00000000"end case;end if;if tchange2='1' then case cnt8 is -綠色when 0 => colg <= shuzu(7)(38-8*move1) downto (31-8*move1); when 1 => colg <= shuzu(6)(38-8*move1) downto (31-8*move1); when 2 => colg <= shuzu(5)(38-8*mov
39、e1) downto (31-8*move1); when 3 => colg <= shuzu(4)(38-8*move1) downto (31-8*move1); when 4 => colg <= shuzu(3)(38-8*move1) downto (31-8*move1); when 5 => colg <= shuzu(2)(38-8*move1) downto (31-8*move1); when 6 => colg <= shuzu(1)(38-8*move1) downto (31-8*move1); when 7 =>
40、; colg <= shuzu(0)(38-8*move1) downto (31-8*move1); when others => colr <= "00000000"end case;end if; when 1=> -three-two左右滾動colg<="00000000"colr<="00000000"if tchange1='1' then case cnt8 is紅色when 0 => colr <= shuzu(7)(38-move downto 31-m
41、ove); when 1 => colr <= shuzu(6)(38-move downto 31-move); when 2 => colr <= shuzu(5)(38-move downto 31-move); when 3 => colr <= shuzu(4)(38-move downto 31-move); when 4 => colr <= shuzu(3)(38-move downto 31-move); when 5 => colr <= shuzu(2)(38-move downto 31-move); when
42、 6 => colr <= shuzu(1)(38-move downto 31-move); when 7 => colr <= shuzu(0)(38-move downto 31-move); when others => colr <= "00000000"end case;end if;if tchange2='1' then case cnt8 is -綠色when 0 => colg <= shuzu(7)(38-move downto 31-move); when 1 => colg &l
43、t;= shuzu(6)(38-move downto 31-move); when 2 => colg <= shuzu(5)(38-move downto 31-move); when 3 => colg <= shuzu(4)(38-move downto 31-move); when 4 => colg <= shuzu(3)(38-move downto 31-move); when 5 => colg <= shuzu(2)(38-move downto 31-move); when 6 => colg <= shuzu(
44、1)(38-move downto 31-move); when 7 => colg <= shuzu(0)(38-move downto 31-move); when others => colg <= "00000000"end case;end if; when 2=> -three-three上下滾動colg<="00000000"colr<="00000000"if tchange1='1' then case cnt8 is紅色when 0 => colr &
45、lt;= shuzu1(38-move)(7 downto 0); when 1 => colr <= shuzu1(37-move)(7 downto 0); when 2 => colr <= shuzu1(36-move)(7 downto 0); when 3 => colr <= shuzu1(35-move)(7 downto 0); when 4 => colr <= shuzu1(34-move)(7 downto 0); when 5 => colr <= shuzu1(33-move)(7 downto 0); w
46、hen 6 => colr <= shuzu1(32-move)(7 downto 0); when 7 => colr <= shuzu1(31-move)(7 downto 0); when others => colr <= "00000000"end case;end if;if tchange2='1' then case cnt8 is -綠色when 0 => colg <= shuzu1(38-move)(7 downto 0); when 1 => colg <= shuzu1(3
47、7-move)(7 downto 0); when 2 => colg <= shuzu1(36-move)(7 downto 0); when 3 => colg <= shuzu1(35-move)(7 downto 0); when 4 => colg <= shuzu1(34-move)(7 downto 0); when 5 => colg <= shuzu1(33-move)(7 downto 0); when 6 => colg <= shuzu1(32-move)(7 downto 0); when 7 => c
48、olg <= shuzu1(31-move)(7 downto 0); when others => colg <= "00000000"end case;end if;when others=> colr <= "00000000"colg <= "00000000"end case;end if;end process ;(4)其他模塊其他模塊均由簡單的防抖,計數器,分頻器等組成,從實驗教材上均可得到。詳見源代碼部分。七、所實現的功能說明1、已完成的基本功能(1)顯示一個笑臉,四級亮度可通過一個
49、btn切換(2)顯示一個笑臉,從紅到綠八級漸變色顯示(3)對于四個字母“MING”的單字循環、左右滾動、上下滾動顯示,顯示模式可通過一個btn切換2、已完成的擴展功能(1)在實現基本功能3時,可通過一個btn切換四種顏色(2)在實現基本功能3時,可自動變換四種顏色,且可通過一個btn調節兩種變色頻率(2HZ,0.5HZ)3、器件資源占用情況器件資源使用情況如下:Total logic elements:504/1270(40%)Total pins:29/116(25%)4、關鍵波形仿真圖(1)pwm調制器產生六種占空比的時鐘信號。仿真波形分析:pwm16是占空比1484%的時鐘信號。(2)數
50、據選擇器根據輸入和計數器當前值輸出不同的時鐘信號控制變色頻率。仿真波形分析:當swt=”00”或”01”時數據選擇器無輸出,對應功能一和功能二時控制變色的計數器值不改變。當swt=”10”時,clkout=btn,即按鍵作為輸出時鐘,功能三中每按鍵一次,顏色變化一次。當swt=”11”時,當cnt2=0時,clkout=clk1;當cnt2=1時,clkout=clk2。即功能四中兩級變色頻率可調。(3)譯碼器功能一、顯示一個笑臉四級亮度可調仿真波形分析:根據cnt4記錄的按鍵次數不同,colr譯碼出來占空比不同,從而改變亮度。功能二、顯示一個笑臉由紅到綠八級漸變色仿真波形分析:Colr占空比
51、從第一行到第八行依次減小,colg占空比從第一行到第八行依次增大。功能三、滾動1、單字循環仿真波形分析:仿真設置的狀態改變的頻率是掃描頻率的16分之1,所以同一個字母顯示兩次后顯示下一個字母。由可以看出顯示了MING。2、左右滾動仿真波形分析:Inst|count是狀態計數值,每一個值對應一個狀態,從這些圖可以看出實現了MING的左右滾動。3、上下滾動仿真波形分析:Inst|count是狀態計數值,每一個值對應一個狀態,從這些圖可以看出實現的MING的上下滾動。功能四、滾動自動變色1、單字循環自動變色:仿真波形分析:Inst3|count是當前顏色狀態的計數值,可以看出根據它的值改變,colr
52、、colg的占空比循環變化,且對應MING單字循環。2、左右滾動自動變色(前5個狀態):仿真波形分析:Inst3|count是當前顏色狀態的計數值,可以看出根據它的值改變,colr、colg的占空比循環變化,且對應MING左右滾動。3、上下滾動自動變色(前5個狀態)仿真波形分析:Inst3|count是當前顏色狀態的計數值,可以看出根據它的值改變,colr、colg的占空比循環變化,且對應MING上下滾動。八、故障及問題分析故障:在自己電腦上和主樓601使用QuartusII9.1編譯通過的程序在主樓615使用QuartusII7.2編譯全部報錯,錯誤是不允許在引用數組中的一部分使用變量。并且
53、后來發現使用QuartusII9.0編譯同樣全部報錯。問題分析:QuartusII9.1版本支持的功能更多,而QuartusII9.0及以下版本不支持動態引用數組這個功能九、總結經過三周的努力,順利完成了點陣實驗的基本功能和擴展功能,并自主添加了額外的兩種功能。通過本次實驗,對于數字電路的設計我有了更深的理解,提高了實際設計能力和動手能力,收益頗豐。十、所用元器件及測試儀表清單1、數字電路與邏輯設計實驗板一個2、主樓601電腦一臺3、下載線一條十一、完整源程序1、總體原理圖設計2、防抖模塊libraryieee;use ieee.std_logic_1164.all;useieee.std_l
54、ogic_unsigned.all;entityfangdou isport(clk:instd_logic; -輸入時鐘,時鐘頻率決定防抖效果,本程序接入的是1000HZ的時鐘reset:instd_logic;resetn:outstd_logic); -防抖后的BTN輸出endfangdou;architecture a of fangdou issignal resetmp1,resetmp2:std_logic;beginprocess(clk)beginif(clk'event and clk='0') thenresetmp2<=resetmp1;r
55、esetmp1<=reset;end if;end process;resetn<=clk and resetmp1 and (not resetmp2);end a;3、一級分頻器(pwm調制器)libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitypwm isport(clk:IN STD_LOGIC; -實驗板上50MHZ時鐘輸入 pwm1:out std_logic; -以下是六種頻率為1000HZ,占空比從14%84%的波 pwm2:outstd_logic; pwm3:o
56、utstd_logic; pwm4:outstd_logic; pwm5:outstd_logic; pwm6:outstd_logic );endpwm;architecture project of pwm isbeginprocess(clk)-pwm,dividervariablecount:integer range 0 to 49999;begin if clk' event and clk='1' then -計數器,其模值決定分頻比if count=49999 thencount:=0;else count:=count+1; end if;end if
57、;ifclk' event and clk='1' then -pwm1if count<7000 thenpwm1<='1'else pwm1<='0'end if;end if;ifclk' event and clk='1' then -pwm2if count<14000 thenpwm2<='1'else pwm2<='0'end if;end if;ifclk' event and clk='1' then -p
58、wm3if count<21000 thenpwm3<='1'else pwm3<='0'end if;end if;ifclk' event and clk='1' then -pwm4-50%if count<28000 thenpwm4<='1'else pwm4<='0'end if;end if;ifclk' event and clk='1' then -pwm5if count<35000 thenpwm5<='1
59、'else pwm5<='0'end if;end if;ifclk' event and clk='1' then -pwm6if count<42000 thenpwm6<='1'else pwm6<='0'end if;end if;end process;end project;4、二級分頻器library ieee; -基本分頻器use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity divider isp
60、ort(clk:instd_logic;clkout: out std_logic);end divider;architecture a of divider issignaltemp:std_logic;beginprocess(clk)variablecount:integer range 0 to 249;beginifclk' event and clk='1' then if count=249 thencount:=0;temp<=not temp;else count:=count+1;end if;end if;end process;clkout<=temp;end a;5、三級分頻器library ieee; -基本分頻器use ieee.std_logic_1164.all;u
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 項目管理績效提升的新維度試題及答案
- 項目管理專家認證考試重要試題及答案
- 2024年福建事業單位考試全局復習策略與試題及答案
- 項目管理資格考試知識推理試題及答案
- 2025年會計政策分析試題及答案
- 精準備戰特許金融分析師考試試題及答案
- 武威電梯裝修施工方案
- 項目管理資格復習關鍵點試題及答案
- 信豐避雷塔安裝施工方案
- 耐高壓潔凈管道施工方案
- 校舍抗震安全鑒定服務投標方案
- 2023年河南測繪職業學院單招考試職業適應性測試試題及答案解析
- Python自然語言處理-課件-第05章-詞向量與關鍵詞提取
- 五年級下冊綜合實踐活動教學設計-有趣的拉線偶人 全國通用
- 醫療廢物管理PPT演示課件
- 海康監控陣列不可用數據不保留處理
- 卓越密碼:如何成為專家
- 卒中管理及中心建設
- 合肥經濟技術開發區公開招聘村(居)社區工作者模擬備考預測(共1000題含答案解析)綜合試卷
- 外派勞務人員基本情況表(勞工表)
- 部編版 八年級下冊語文 第五單元復習課件
評論
0/150
提交評論