資源描述:
《多路彩燈設(shè)計eda課程設(shè)計學(xué)士學(xué)位論文.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、EDA課程設(shè)計多路彩燈控制設(shè)計前言本次課程設(shè)計的主要目的是通過電子設(shè)計自動化的設(shè)計,掌握FPGA應(yīng)用系統(tǒng)的開發(fā)過程,進一步理解FPGA應(yīng)用系統(tǒng)的工作原理。本課程設(shè)計設(shè)計了一個多路彩燈控制器,十六種彩燈能循環(huán)變化,有清零開關(guān),可以變化彩燈閃動頻率即是可以選擇快慢兩種節(jié)拍。整個系統(tǒng)有三個輸入信號,分別為控制快慢的信號OPT,復(fù)位清零信號CLR,輸出信號是16路彩燈輸出狀態(tài)。最后按照FPGA的開發(fā)流程和VHDL語言建模、仿真、綜合、下載、適配,用EDA6000實驗箱上的FPGA系統(tǒng)實現(xiàn)了相應(yīng)的功能。通過這次課程設(shè)計更清楚的理解了VHDL程序的描述語言,能進行簡單程序的編寫
2、和仿真。一.系統(tǒng)設(shè)計要求設(shè)計一個多路彩燈控制器,十六種彩燈能循環(huán)變化,有清零開關(guān),可以變化彩燈閃動頻率即是可以選擇快慢兩種節(jié)拍。二.設(shè)計方案整個系統(tǒng)有三個輸入信號,分別為控制快慢的信號OPT,復(fù)位清零信號CLR,輸出信號是16路彩燈輸出狀態(tài)。系統(tǒng)框圖如:主要模塊組成:時序控制電路模塊和顯示電路模塊,時序控制電路是根據(jù)輸入信號的設(shè)置得到相應(yīng)的輸出信號,并將此信號作為顯示電路的時鐘信號;顯示電路輸入時鐘信號的周期,有規(guī)律的輸出設(shè)定的六種彩燈變化類型。三.模塊設(shè)計時序控制模塊:CLK_IN為輸入時鐘信號,電路在時鐘上升沿變化;CLR為復(fù)位清零信號,高電平有效,一旦有效時,
3、電路無條件的回到初始狀態(tài);chose_key為頻率快慢選擇信號,低電平節(jié)奏快,高電平節(jié)奏慢;CLK為輸出信號,CLR有效時輸出為零,否則,隨chose_key信號的變化而改變。我們假設(shè)時序控制電路所產(chǎn)生的控制時鐘信號的快慢兩種節(jié)奏分別為輸入時鐘信號頻率的1/4和1/8,因而輸出時鐘控制信號可以通過對輸入時鐘的計數(shù)來獲得。當chose_key為低電平時,輸出沒經(jīng)過兩個時鐘周期進行翻轉(zhuǎn),實現(xiàn)四分頻的快節(jié)奏;當chose_key為高電平時,輸出每經(jīng)過四個時鐘周期進行翻轉(zhuǎn),實現(xiàn)把八分頻的慢節(jié)奏。顯示控制電路的模塊框圖如圖所示,輸入信號clk和的定義與時序控制電路一樣,輸入信
4、號led[15...0]能夠循環(huán)輸出16路彩燈16種不同狀態(tài)的花型。對狀態(tài)的所對應(yīng)的彩燈輸出花型定義如下:S0:0000000000000000S1:0001000100010001S2:0010001000100010S3:0011001100110011S4:0100010001000100S5:0101010101010101S6:0110011001100110S7:0111011101110111S8:1000100010001000S9:1001100110011001S10:1010101010101010S11:1011101110111011S12
5、:1100110011001100S13:1101110111011101S14:1110111011101110S15:1111111111111111多路彩燈在多種花型之間的轉(zhuǎn)換可以通過狀態(tài)機實現(xiàn),當復(fù)位信號clr有效時,彩燈恢復(fù)初始狀態(tài)s0,否則,每個時鐘周期,狀態(tài)都將向下一個狀態(tài)發(fā)生改變,并對應(yīng)輸出的花型,這里的時鐘周期即時時序控制電路模塊產(chǎn)生的輸出信號,它根據(jù)chose_key信號的不同取值得到兩種快慢不同的時鐘頻率。四.序控制電路模塊程序如下:Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic
6、_unsigned.all;EntityCDisPort(chose_key1:instd_logic;Clk_in1:instd_logic;Clr1:instd_logic;Led1:outstd_logic_vector(15downto0));EndCD;ArchitectureoneofCDiscomponentsxkzPort(chose_key:instd_logic;Clk_in:instd_logic;Clr:instd_logic;Clk:outstd_logic);Endcomponent;componentxskzPort(Clr:instd
7、_logic;Clk:instd_logic;Led:outstd_logic_vector(15downto0));Endcomponent;signala:std_logic;beginu1:sxkzportmap(chose_key=>chose_key1,Clk_in=>Clk_in1,Clr=>Clr1,Clk=>a);u2:xskzportmap(Clr=>Clr1,Led=>Led1,Clk=>a);endarchitectureone;Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic