資源描述:
《電子課程設計-字符發(fā)生器》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫。
1、電子課程設計——字符發(fā)生器字符發(fā)生器一、設計任務與要求1.設計任務:利用實驗箱上16X16點陣,設計字符發(fā)生器,可以循環(huán)顯示預置字符:走好中國特色的社會主義道路2.設計要求:(1)利用VHDL編寫字符掃描驅動電路;(2)編寫預置字符的rom程序生成模塊接入電路;(3)設計一個可以自動循環(huán)顯示十三個字符的電路.二、總體框圖行選線產(chǎn)生信號列選線產(chǎn)生電路時鐘脈沖源ROM存儲器地址計數(shù)器發(fā)光二極管顯示圖1設計思路:ROM存儲器是一個用來存儲數(shù)據(jù)的具有讀寫功能的的存儲器,在此電路中的作用是存儲“走好中國特色的社會主義道路”十三個字。在時鐘脈沖的作用下,地址計數(shù)器計數(shù),ROM相對應的地址
2、單元中的代碼輸出,以驅動列選通線產(chǎn)生電路。地址計數(shù)器同時又為行選通線產(chǎn)生電路。地址隨著地址計數(shù)器計數(shù)值的變化,發(fā)光二極管顯示屏逐行掃描,顯示屏上顯示出字符或圖案。三、選擇器件與功能模塊1.用來構成輸出十三進制的74161十六進制計數(shù)器(1)74161器件圖圖2A.B.C.D為輸入端;LDN為置數(shù)端;ENT與ENP為使能控制端;CLRN為清零端;RCO為進位輸出端;QA.QB.QC.QD為輸出端;CLK為脈沖信號輸入端。(2)74161內部結構圖圖3(3)74161功能表CPCLRN(RD非)LDN(LD非)EPET工作狀態(tài)X0XXX清零↑10XX預置數(shù)X1101保持X11X0
3、保持↑1111計數(shù)圖4(4)十三進制計數(shù)器真值表CPQ0Q1Q2Q300000100012001030011401005010160110701118100091001101010111011121100131101141110151111圖5(5)用74161構成的十三進制計數(shù)器原理圖圖6(6)十三進制時序仿真圖圖7仿真分析:由仿真圖分析可知,輸出QA,QB,QC,QD將從"0000"一直變化到"1101",即一個脈沖周期結束返回,由此可證明此接法正確為十三進制計數(shù)器。2.a(chǎn)ddress模塊設計文件address.vhd說明:clk為時鐘輸入端口;reset為置零端;din
4、[15..0]為接受ROM數(shù)據(jù)信號端口;ad[3..0]為片選地址輸出;qout[15..0]為十六位驅動.address設計程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityaddressisport(clk,reset:instd_logic;din:instd_logic_vector(15downto0);ad:outstd_logic_vector(3downto0);qout:outstd_logic_vector(15downto0));endaddres
5、s;architectureaofaddressisbeginprocess(clk,din,reset)variableQ1:std_logic_vector(3downto0):="0000";beginifclk'eventandclk='1'thenifreset='0'or(Q1="1111")thenQ1:="0000";elseQ1:=Q1+1;endif;qout<=din;endif;ad<=Q1;endprocess;enda;由VHDL編譯生成的address模塊圖8模塊功能:地址選擇器包含行選線產(chǎn)生電路和列選線產(chǎn)生電路,從ROM中選擇相應的地址輸出。C
6、lk為掃描時鐘脈沖,控制掃描速度的快慢;RESET為復位端,只有在RESET為高電平的情況下,在脈沖上升沿到來時,ad計數(shù),其中ad[3..0]輸出掃描驅動信號,接入掃描片選端,依次選中LED點陣的各列,din輸入字符存儲器中每個存儲單元的數(shù)據(jù),qout[15..0]控制LED點陣,din中存儲器中調用的數(shù)據(jù)模塊由qout[15..0]輸出,在LED點陣中經(jīng)掃描顯示字符。仿真波形:圖93.用來存儲字符的ROM256*13存儲器(1)ROM的說明在設計ROM時,根據(jù)ROM的大小,我們可以采用不同的設計方法進行設計,比如4x8,8x8或256x8的ROM可以采用數(shù)組描述或WHEN
7、-ELSE.然而數(shù)組描述ROM在面積上是最有效的,在用數(shù)組描述時,常把數(shù)組常量的ROM放在一個程序包中,這種方法可以提供ROM的重用,在程序包中應當用常量定義ROM的大小.而用WHEN-ELSE描述一個ROM,它確實是最直觀的,它是類似查表的方法來設計的,本次設計就是一個用WHEN-ELSE設計的256x16的ROM。(2)存入ROM中的數(shù)據(jù)(文本格式.mif)width=16;depth=256;address_radix=hex;data_radix=hex;contentbegin01000100