版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、封面作者: PanHongliang僅供個(gè)人學(xué)習(xí)基于 FPGA 控制的 LED 漢字滾動(dòng)顯示器設(shè)計(jì)2 硬件原理圖整個(gè)電路由五大部分組成:時(shí)鐘計(jì)數(shù)模塊GEL_CLK,存儲(chǔ)漢字字模的 ROM模塊ROMZI ,數(shù)據(jù)分配器模塊MUX ,移位模塊YW 及顯示模塊 XIANSH-I 。時(shí)鐘計(jì)數(shù)模塊用于產(chǎn)生整個(gè)電路所需要的時(shí)鐘及其對(duì)時(shí)鐘的計(jì)數(shù)值,例如:移位時(shí)鐘CLK YW ,移位計(jì)數(shù)器CNT YW,字計(jì)數(shù)器 CNT WORD,顯示掃描計(jì)數(shù)器 CNT SM。ROMZI模塊是由 Qualtus n 中的LPM 1PORT ROM定制成,用來(lái)存儲(chǔ) 8個(gè)待顯示的漢字。 MUX模塊用于在掃描時(shí)鐘及 掃描計(jì)數(shù)器的作用下
2、,從ROM 中讀出一個(gè)漢字的 8 個(gè)行字模信息,送給移位模塊YW ,YW模塊在移位時(shí)鐘及移位計(jì)數(shù)器作用下,根據(jù)SELECT信號(hào)選擇對(duì)讀出的字模信息,進(jìn)行相應(yīng)的移位(左移、右移、上移、下移) 后,最后送顯示模塊DISP 驅(qū)動(dòng) LED 點(diǎn)陣顯示漢字。原理圖如圖 2 所示。3 2 ROMZI 模塊利用LPM參數(shù)化模塊庫(kù)中單口 ROM,利用 Qualtus n中的 MegaWizard Plug-InManager 定制而成,定制前首先要制作LPM ROM 初始化文件,其中存儲(chǔ)待顯示漢字的字模數(shù)據(jù),然后按照 LPM MegaWizardPlug-In Manager 的向?qū)崾?,結(jié)合設(shè)計(jì)要求進(jìn)行定 制
3、。圖 3 為所定制 ROM 中的初始化漢字 “元旦生日開(kāi)心快樂(lè)” 的字型碼。數(shù)據(jù)分配模塊MUX 要求能在 8 個(gè)時(shí)鐘作用下,從 ROM 中讀出一行(一個(gè)漢字的8 個(gè)字型碼 )分別送到數(shù)據(jù)分配器中的 WLlWL8輸出端。圖4為數(shù)據(jù)分配模塊在掃描時(shí)鐘作用下讀取的字模數(shù) 據(jù),比較圖 3 和圖 4 可知,仿真結(jié)果正確,能滿足題目要求。3 3 移位模塊 YW移位模塊 YW 是整個(gè)設(shè)計(jì)的核心,行掃描實(shí)現(xiàn)左移,是通過(guò)每來(lái)一個(gè)移位時(shí)鐘,將每一行的字模按位左移一位,掃描時(shí)鐘到來(lái)時(shí)送出移位后的新字模。通過(guò)8 次移位,可將一個(gè)漢字移出點(diǎn)陣平面,按類似的道理,也可以將一個(gè)漢字經(jīng) 8 次移位后移進(jìn)點(diǎn)陣平面。本例(圖2)
4、中,CNT YW為移位時(shí)鐘的計(jì)數(shù)值,以WLlWL8為欲顯示漢字的原始字模,L10L80為移位后從列上送出的 8行顯示字模信息,LLlLL8為8個(gè)原始字模信息未送出 位的暫存信號(hào)。設(shè)計(jì)中需要16個(gè)移位時(shí)鐘,通過(guò)前 8個(gè)時(shí)鐘將 WLlWL8字模移進(jìn)LED點(diǎn)陣平面,再經(jīng)后 8 個(gè)時(shí)鐘,將漢字又一位一位地移出。移位設(shè)計(jì)參考文獻(xiàn)中有關(guān)移位寄 存器的設(shè)計(jì),分計(jì)數(shù)值為“ 0000"和非"0000" 兩部分處理,對(duì)第一行字模的處理為:其他行可按相同方法處理,具體參見(jiàn)如下的程序:library IEEE 。use IEEE.std_logic_1164.all 。use ieee.
5、std_logic_arith.all 。use ieee.std_logic_unsigned.all 。entity memtest isport (rst : in std_logic 。clk : in std_logic 。den : in std_logic 。 -serial input enablerxd : in std_logic 。 -serial input dataouten : in std_logic 。 - output data requestrdmem : out std_logic 。 -read memorywrmem : out std_logic 。
6、 - write memorycsmem : out std_logic 。 - chip enable memorymemdata: inout std_logic_vector(7 downto 0) 。 - memory data interfacememaddr: out std_logic_vector(2 downto 0) 。 - memory addressdataout: out std_logic_vector(7 downto 0) 。 -data outputdataclkout: out std_logic -data output sync clk)。end mem
7、test。architecture behav of memtest isconstant s0 :std_logic_vector(2 downto 0):= "001" 。constant s1 :std_logic_vector(2 downto 0):= "010" 。constant s2 :std_logic_vector(2 downto 0):= "100" 。signal ss: std_logic_vector(2 downto 0) 。signal rdmemaddr,wrmemaddr: std_logic_v
8、ector(2 downto 0) 。signal rxdcnt: std_logic_vector(3 downto 0) 。signal rdmemdata, wrmemdata :std_logic_vector(7 downto 0) 。signal wrmem_s, wrrdy, dataclkout_s :std_logic 。beginprocess(rst,clk)beginif rst = '0' thenwrmemdata <= (others =>'0') 。wrmemdata(7) <= wrmemdata(6) 。wr
9、memdata(6) <= wrmemdata(5) 。wrmemdata(5) <= wrmemdata(4) 。wrmemdata(4) <= wrmemdata(3) 。wrmemdata(3) <= wrmemdata(2) 。wrmemdata(2) <= wrmemdata(1) 。wrmemdata(1) <= wrmemdata(0) 。wrmemdata(0) <= rxd 。end if 。end if 。end process。process(rst,clk)beginif rst = '0' thenrxdcnt
10、 <= (others =>'0') 。elsif clk'event and clk = '1' thenif den = '1' thenif rxdcnt = 9 thenrxdcnt <= rxdcnt 。elserxdcnt <= rxdcnt +1 。end if 。elserxdcnt <= (others =>'0') 。end if 。end if 。end process。process(rst,clk)beginif rst = '0' thenss
11、 <= s0。elsif clk'event and clk = '1' thencase ss iswhen s0 =>if wrrdy = '1' thenss <= s1。elsif outen = '1' thenss <= s2。end if 。when s1 =>ss <= s0。when s2 =>ss <= s0。when others =>ss <= s0。end case。end if 。end process。process(rst,clk)beginif
12、rst = '0' thenwrrdy <= '0' 。elsif clk'event and clk = '1' thenif ss = s1 thenwrrdy <= '0' 。elseif rxdcnt = 8 thenwrrdy <= '1' 。elsewrrdy <= '0' 。end if 。end if 。end if 。wrmem_s <= '0' when ss = s1 else '1' 。rdmem <
13、= '0' when ss = s2 else '1' 。csmem <= '1' when ss = s1 or ss = s2 else '0'。process(rst,clk)beginif rst = '0' thendataclkout_s <= '0' 。elsif clk'event and clk = '1' thenif ss = s2 thendataclkout_s <= '1' 。elsedataclkout_s &l
14、t;= '0' 。end if 。end if 。end process。process(clk)beginif clk'event and clk = '1' thendataclkout <= dataclkout_s 。end if 。end process。process(rst,clk)beginif rst = '0' thendataout <= (others =>'0') 。elsif clk'event and clk = '1' thenif ss = s2
15、thendataout <= rdmemdata。end if 。end if 。end process。process(rst,clk)beginif rst = '0' thenwrmemaddr <= (others =>'0') 。elsif clk'event and clk = '1' thenif ss = s1 thenwrmemaddr <= wrmemaddr +1 。end if 。end if 。end process。process(rst,clk)beginif rst = '0
16、' thenrdmemaddr <= (others =>'0') 。elsif clk'event and clk = '1' thenif ss = s2 thenrdmemaddr <= rdmemaddr +1 。end if 。end if 。end process。memaddr <= wrmemaddr when wrmem_s = '0' else rdmemaddr 。memdata <= wrmemdata when wrmem_s = '0' else "
17、;ZZZZZZZZ" 。rdmemdata <= memdata 。wrmem <= wrmem_s 。end behav。library IEEE 。use IEEE.std_logic_1164.all 。use ieee.std_logic_arith.all 。use ieee.std_logic_unsigned.all 。entity states isport (rst : in std_logic 。clk : in std_logic 。nscar: in std_logic 。ewcar: in std_logic 。nsred: out std_lo
18、gic 。nsgreen: out std_logic 。nsyellow: out std_logic 。ewred: out std_logic 。ewgreen: out std_logic 。ewyellow: out std_logic)。end states。architecture behav of states isconstant s0 :std_logic_vector(1 downto 0):= "00" 。 - ewgreenconstant s1 :std_logic_vector(1 downto 0):= "01" 。con
19、stant s2 :std_logic_vector(1 downto 0):= "11" 。 - nsgreenconstant s3 :std_logic_vector(1 downto 0):= "10" 。signal ss: std_logic_vector(1 downto 0) 。signal tm60s,tm40s :std_logic_vector(5 downto 0) 。signal tm3s :std_logic_vector(1 downto 0) 。signal entm60s,entm40s,entm3s,tm60soc,t
20、m40soc,tm3soc :std_logic 。beginprocess(rst,clk)beginif rst = '0' thenss <= s0。when s0 =>if nscar = '1' thenif ewcar = '1' thenif tm60soc = '1' thenss <= s1。end if。elsess <= s1。end if 。end if 。when s1 =>if tm3soc = '1' thenss <= s2。end if 。whe
21、n s2 =>if nscar = '1' thenif ewcar = '1' thenif tm40soc = '1' thenss <= s3。end if。end if 。elsess <= s3。end if 。when s3 =>if tm3soc = '1' thenss <= s0。end if 。when others =>ss <= s0。end case。end if 。end process。process(rst,clk)beginif rst = '0&
22、#39; thenentm60s <= '0' 。elsif clk'event and clk = '1' thenif ss = s0 thenentm60s <= '1' 。elseentm60s <= '0' 。end if 。end if 。end process。process(rst,clk)beginif rst = '0' thenentm40s <= '0' 。elsif clk'event and clk = '1' th
23、enif ss = s2 thenentm40s <= '1' 。elseentm40s <= '0' 。end if 。end if 。end process。process(rst,clk)beginif rst = '0' thenentm3s <= '0' 。elsif clk'event and clk = '1' thenif ss = s1 or ss = s3 thenentm3s <= '1' 。elseentm3s <= '0'
24、; 。end if 。end if 。end process。process(rst,clk)beginif rst = '0' thentm60s <= B"000000" 。elsif clk'event and clk = '1' thenif entm60s = '1' thenif tm60s = 59 thentm60s <= B"000000" 。elsetm60s <= tm60s + 1 。end if 。elsetm60s <= B"000000
25、" 。end if 。end if 。end process。process(rst,clk)beginif rst = '0' thentm40s <= B"000000" 。elsif clk'event and clk = '1' thenif entm40s = '1' thenif tm40s = 39 thentm40s <= B"000000" 。elseend if 。elsetm40s <= B"000000" 。end if 。en
26、d if 。end process。process(rst,clk)beginif rst = '0' thentm3s <= B"00" 。elsif clk'event and clk = '1' thenif entm3s = '1' thenif tm3s = 2 thentm3s <= B"00" 。elsetm3s <= tm3s + 1 。end if 。elsetm3s <= B"00" 。end if 。end if 。end proce
27、ss。process(rst,clk)beginif rst = '0' thentm60soc <= '0' 。elsif clk'event and clk = '1' thenif tm60s = 59 thentm60soc <= '1' 。elsetm60soc <= '0' 。end if 。end if 。end process。process(rst,clk)beginif rst = '0' thentm40soc <= '0' 。e
28、lsif clk'event and clk = '1' thenif tm40s = 39 thentm40soc <= '1' 。elsetm40soc <= '0' 。end if 。end if 。end process。process(rst,clk)beginif rst = '0' thentm3soc <= '0' 。elsif clk'event and clk = '1' thenif tm3s = 2 thentm3soc <= '
29、;1' 。elsetm3soc <= '0' 。end if 。end if 。end process。process(rst,clk)beginif rst = '0' thennsred <= '1' 。ewred <= 'O'。ewgreen <= '1'oewyellow <= 'O'。elsif clk'event and elk = '1' thencase ss iswhen sO =>nsred <= '
30、;1'onsgreen <= 'O'。nsyellow <= 'O'。ewred <= 'O'。ewgreen <= '1'o ewyellow <= 'O'。when s1 =>nsred <= 'O'。nsgreen <= 'O'。nsyellow <= '1'。ewred <= 'O'。ewgreen <= 'O'。ewyellow <= '1
31、'。when s2 =>nsred <= 'O'。nsgreen <= '1'o nsyellow <= 'O'。ewred <= '1' oewgreen <= 'O'。ewyellow <= 'O'。when s3 =>nsred <= 'O'。nsgreen <= 'O'。nsyellow <= '1'。ewred <= 'O'。ewgreen <= 'O'。ewyellow <= '1' 。when others =>end casaend if。end process。 end behav。版權(quán)申明本文部分內(nèi)容,包括文字、圖片、以及設(shè)計(jì)等在網(wǎng)上搜集整 理。版權(quán)為潘宏亮個(gè)人所有This article includes some parts, including text, pictures, and design. Copyright is Pan Hongli
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年乳膠球膽項(xiàng)目可行性研究報(bào)告
- 2021-2026年中國(guó)度假地產(chǎn)行業(yè)市場(chǎng)深度分析及投資戰(zhàn)略研究報(bào)告
- 2025年建設(shè)模板項(xiàng)目可行性研究報(bào)告
- 學(xué)校黨建工作業(yè)務(wù)培訓(xùn)
- 探測(cè)器及探測(cè)模塊項(xiàng)目申請(qǐng)報(bào)告可行性研究報(bào)告
- 《IP包的傳送方式》課件
- 2024年教師資格之中學(xué)綜合素質(zhì)題庫(kù)(奪冠)
- 在公安干校上公共管理知識(shí)
- 婦產(chǎn)科臨床科普
- 2024至2030年中國(guó)電動(dòng)土壤相對(duì)密度儀數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2023屆河南省洛陽(yáng)市平頂山市許昌市濟(jì)源市高三一模語(yǔ)文試題
- 【超星爾雅學(xué)習(xí)通】《老子》《論語(yǔ)》今讀網(wǎng)課章節(jié)答案
- 配電箱采購(gòu)技術(shù)要求
- 上海外國(guó)語(yǔ)大學(xué)附屬外國(guó)語(yǔ)學(xué)校2020-2021七年級(jí)下學(xué)期期中英語(yǔ)試卷+答案
- 綠色施工措施措施 四節(jié)一環(huán)保
- 杞縣污水處理廠(第二污水處理廠)改擴(kuò)建工程項(xiàng)目環(huán)境影響報(bào)告書(shū)
- 知識(shí)產(chǎn)權(quán)三星蘋果專利戰(zhàn)課件
- TCSES 71-2022 二氧化碳地質(zhì)利用與封存項(xiàng)目泄漏風(fēng)險(xiǎn)評(píng)價(jià)規(guī)范
- 藥品上量實(shí)用
- GB/T 9065.2-2010液壓軟管接頭第2部分:24°錐密封端軟管接頭
- GB/T 8561-2001專業(yè)技術(shù)職務(wù)代碼
評(píng)論
0/150
提交評(píng)論