数字电路与逻辑设计实验设计方案双色点阵显示控制器.doc

数字电路与逻辑设计实验设计方案双色点阵显示控制器.doc

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字电路与逻辑设计实验设计方案双色点阵显示控制器

数字电路与逻辑设计 实验设计方案 题目:双色点阵显示控制器 一、设计思路 基本要求: 固定红色显示一个汉字或图形,显示亮度4级可调,用一个btn按钮实现亮度调节,亮度变化视觉效果要尽量明显。 用从红到绿8级渐变色显示一个固定汉字或图形。 分别用单字循环显示、左右滚动显示、上下滚动显示三种显示方式单色显示四个汉字或图形,显示过程中,显示方式用一个btn按键进行切换。 显示的图形或汉字要尽量饱满美观。 提高要求: 滚动显示过程中实现四种显示颜色的自动变换,颜色变化视觉效果要尽量明显。 自拟其它功能。 二、系统设计 总体框图 方框图(模块划分) ASM图 MDS图 三、仿真波形及仿真分析 时钟分频 分析:这个进程组用于产生不同频率的时钟用于不同用途的时钟信号,图中所表达的也是如此,不同频率的时钟信号。 对于lightness信号来说,它是一个低分频的,可控占空比的信号,图中所示为占空比为80%时的信号。 防抖 分析:Mode_in和intensity_in信号有短时间的抖动现象,在经过防抖之后,短时间的抖动并不会影响mode和intensity信号。 Mode_in和intensity_in信号有长时间的高电平,这会使控制电路既要检测上升沿又要检测下降沿。经过防抖程序之后,将控制信号mode和intensity处理成脉冲信号,这样控制电路只需检测是否有正脉冲就可以了。 状态控制与亮度调节 分析:每当mode信号有一个正脉冲时,state就变化一次。每当intensity信号有一个正脉冲时,lightness就改变一次占空比。 颜色改变 分析:当状态改变到S1的时候,占空比信号才会改变。从图中可以看出,可控占空比信号是每八个时间单位为一组,这八个时间单位分别代表着第一行被选中、第二行被选中、……第八行被选中。当第一行被选中时,可以清楚看到红色和绿色控制信号的占空比是不同的,这样就会导致点阵点的颜色中红色成分和绿色成分亮度不同,从而改变其颜色。 字符显示部分 分析:从图中可以看出,当模式切换后,列内容信号会被赋予不同的值,且随时间而改变。 显示部分 分析:从图中可以看出,各个信号之间的逻辑关系符合代码中的表达式。 四、源程序(含注释) LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY pointmatrix IS PORT( clk:IN STD_LOGIC; mode_in:IN STD_LOGIC; intensity_in:IN STD_LOGIC; row:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); red_col:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); green_col:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END pointmatrix; ARCHITECTURE a OF pointmatrix IS TYPE all_state IS (S0,S1,S2,S3,S4); SIGNAL state:all_state; SIGNAL clk_move:STD_LOGIC; SIGNAL clk_div:STD_LOGIC; SIGNAL clk_occupy:STD_LOGIC; SIGNAL clk_temp:STD_LOGIC; SIGNAL clk_lightness:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL data0,data1,data2,data3,data4,data5,data6,data7:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL data_row:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL data_col:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL gr_occupy:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL re_occupy:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL mode:STD_LOGIC; SIGNAL intensity:STD_LOGIC; SIGNAL occupy_count:INTEGER RANGE 0 TO 100; SIGNAL tmp1,tmp2,tmp3,tmp4:STD_LOGIC; BEGIN div_move:PROCESS(clk) --用于防抖的分频 VARIABLE count:INTEGER RANGE 0 TO

文档评论(0)

ctuorn0371 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档