FPGA控制LED汉字滚动显示器设计方案 .docx
《FPGA控制LED汉字滚动显示器设计方案 .docx》由会员分享,可在线阅读,更多相关《FPGA控制LED汉字滚动显示器设计方案 .docx(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品名师归纳总结封面可编辑资料 - - - 欢迎下载精品名师归纳总结作者: PanHongliang仅供个人学习基于 FPGA 把握的 LED 汉字滚动显示器设计2 硬件原理图整个电路由五大部分组成:时钟计数模块GEL_CLK,储备汉字字模的ROM 模块ROMZI ,数据支配器模块MUX ,移位模块 YW 及显示模块XIANSH-I 。时钟计数模块用于可编辑资料 - - - 欢迎下载精品名师归纳总结产生整个电路所需要的时钟及其对时钟的计数值,例如:移位时钟CLK YW,移位计数器CNT YW,字计数器 CNT WORD ,显示扫描计数器 CNT SM。ROMZI 模块是由 Qualtus 中的
2、 LPM 1PORT ROM 定制成,用来储备 8 个待显示的汉字。 MUX 模块用于在扫描时钟及扫描计数器的作用下,从 ROM 中读出一个汉字的 8 个行字模信息,送给移位模块 YW,YW 模块在移位时钟及移位计数器作用下,依据SELECT信号选择对读出的字模信息,进行相应的移位 左移、右移、上移、下移 后,最终送显示模块DISP 驱动 LED 点阵显示汉字。原理图如图 2 所示。3 2 ROMZI 模块利用 LPM 参数化模块库中单口ROM,利用 Qualtus 中的 MegaWizard Plug-In Manager 定制而成,定制前第一要制作LPM ROM 初始化文件,其中储备待显示
3、汉字的字模数据,然后依据LPM MegaWizardPlug-In Manager的向导提示,结合设计要求进行定制。图 3 为所定制 ROM 中的初始化汉字 “元旦生日兴奋欢快”的字型码。数据支配模块MUX 要求能在 8 个时钟作用下,从ROM 中读出一行 一个汉字的 8 个字型码 分别送到数据支配器中的WLl WL8 输出端。图 4 为数据支配模块在扫描时钟作用下读取的字模数据,比较图 3 和图 4 可知,仿真结果正确,能中意题目要求。3 3 移位模块 YW移位模块 YW 是整个设计的核心,行扫描实现左移,是通过每来一个移位时钟,将每一行的字模按位左移一位,扫描时钟到来时送出移位后的新字模。
4、通过8 次移位,可将一个汉字移出点阵平面,按类似的道理,也可以将一个汉字经8 次移位后移进点阵平面。本例 图 2 中, CNT YW 为移位时钟的计数值,以WLl WL8 为欲显示汉字的原始字模, L10 L80 为移位后从列上送出的8 行显示字模信息,LLl LL8 为 8 个原始字模信息未送出位的暂存信号。设计中需要16 个移位时钟,通过前8 个时钟将 WLl WL8 字模移进 LED点阵平面,再经后8 个时钟,将汉字又一位一位的移出。移位设计参考文献中有关移位寄存器的设计,分计数值为“0000和非 0000 两部分处理,对第一行字模的处理为:其他行可按相同方法处理,具体参见如下的程序:l
5、ibrary IEEE 。use IEEE.std_logic_1164.all 。use ieee.std_logic_arith.all 。use ieee.std_logic_unsigned.all 。可编辑资料 - - - 欢迎下载精品名师归纳总结entity memtest is port rst: in std_logic 。clk: in std_logic 。den: in std_logic 。-serial input enable rxd: in std_logic 。-serial input data outen : in std_logic 。- output d
6、ata request rdmem : out std_logic 。-read memory wrmem : out std_logic 。- write memorycsmem : out std_logic 。- chip enable memorymemdata: inout std_logic_vector7 downto 0。- memory data interface memaddr: out std_logic_vector2 downto 0 。 - memory address dataout: out std_logic_vector7 downto 0 。-data
7、outputdataclkout: out std_logic -data output sync clk。end memtest。architecture behav of memtest isconstant s0 :std_logic_vector2 downto 0:= 001。constant s1 :std_logic_vector2 downto 0:= 010。constant s2 :std_logic_vector2 downto 0:= 100。signal ss: std_logic_vector2 downto 0 。signal rdmemaddr,wrmemadd
8、r: std_logic_vector2 downto 0。signal rxdcnt: std_logic_vector3 downto 0。signal rdmemdata, wrmemdata :std_logic_vector7 downto 0。signal wrmem_s, wrrdy, dataclkout_s :std_logic。beginprocessrst,clk beginif rst = 0 thenwrmemdata 0 。elsif clkevent and clk = 1 then if den = 1 then可编辑资料 - - - 欢迎下载精品名师归纳总结w
9、rmemdata7 = wrmemdata6 。wrmemdata6 = wrmemdata5 。wrmemdata5 = wrmemdata4 。wrmemdata4 = wrmemdata3 。wrmemdata3 = wrmemdata2 。wrmemdata2 = wrmemdata1 。wrmemdata1 = wrmemdata0 。可编辑资料 - - - 欢迎下载精品名师归纳总结end if 。end process。processrst,clkbeginend if 。wrmemdata0 = rxd 。可编辑资料 - - - 欢迎下载精品名师归纳总结if rst = 0 th
10、enrxdcnt 0 。elsif clkevent and clk = 1 then if den = 1 thenif rxdcnt = 9 thenrxdcnt = rxdcnt 。elserxdcnt = rxdcnt +1 。end if 。else可编辑资料 - - - 欢迎下载精品名师归纳总结end if 。end process。processrst,clkbeginend if 。rxdcnt 0 。可编辑资料 - - - 欢迎下载精品名师归纳总结if rst = 0 thenss if wrrdy = 1 thenss = s1。elsif outen = 1 thenss
11、 ss ss ss = s0。end case。end if 。end process。processrst,clk beginif rst = 0 thenwrrdy = 0 。elsif clkevent and clk = 1 then if ss = s1 thenwrrdy = 0 。elseif rxdcnt = 8 thenwrrdy = 1 。可编辑资料 - - - 欢迎下载精品名师归纳总结elseend if 。wrrdy = 0 。可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载精品名师归纳总结end if 。end process。end
12、if 。可编辑资料 - - - 欢迎下载精品名师归纳总结wrmem_s = 0 when ss = s1 else 1。rdmem = 0 when ss = s2 else 1。csmem = 1 when ss = s1 or ss = s2 else 0。processrst,clk beginif rst = 0 thendataclkout_s = 0 。elsif clkevent and clk = 1 thenif ss = s2 thendataclkout_s = 1 。elsedataclkout_s = 0 。end if 。end if 。end process。pr
13、ocessclk beginif clkevent and clk = 1 thendataclkout = dataclkout_s 。end if 。end process。processrst,clkbeginif rst = 0 thendataout 0 。elsif clkevent and clk = 1 thenif ss = s2 thendataout = rdmemdata。end if 。end if 。end process。可编辑资料 - - - 欢迎下载精品名师归纳总结processrst,clk beginif rst = 0 thenwrmemaddr 0 。
14、elsif clkevent and clk = 1 then if ss = s1 then可编辑资料 - - - 欢迎下载精品名师归纳总结end if 。end process。processrst,clkbeginend if 。wrmemaddr = wrmemaddr +1 。可编辑资料 - - - 欢迎下载精品名师归纳总结if rst = 0 thenrdmemaddr 0 。elsif clkevent and clk = 1 then if ss = s2 thenrdmemaddr = rdmemaddr +1 。end if 。end if 。end process。mem
15、addr = wrmemaddr when wrmem_s = 0 else rdmemaddr 。memdata = wrmemdata when wrmem_s = 0 else 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 is可编辑资料
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA控制LED汉字滚动显示器设计方案 FPGA 控制 LED 汉字 滚动 显示器 设计方案
限制150内