crt字符控制器设计毕业设计(编辑修改稿)内容摘要:

设计思路 CRT 字符控制器是一个较大的数字系统,采用模块化设计原则、借鉴自顶向下的程序设计思想,进行功能分离并按层次设计。 利用 VHDL 硬件描述语言对每个功能模块进行描述,并逐一对每个功能模块进行编译仿真,使顶层 VGA 显示控制器的模块实体仿真综合得以顺利通过。 第一步:系统功能 结构设计 VGA 显示控制器实现的主要功能是向 CRT 显示器发出图形 、图像 控制信号,产生相应的图形 、图像 显示。 由此,容易得到系统 功能 结构框图,有关系统功能分析和输入输出约束,详述于。 第二步:系统层次模块划分 从系统逻辑结构出发 ,将系统设计为 3层。 顶层用于描述整个系统的功能和运行;第二层承接顶层,负责实现系统中各个独立而完整的功能部分;第三层为第二层的子模块,用于扩展第二层的功能,具体负责用户模式的实现。 每个层次可用一个或多个具体模块加以实现,层次模块划分详述于 小节中。 控制器部分是系统的核心部分,负责协调和控制各子模块的工作。 控制器设计采用有限状态机的方法,详述于 小节中。 第三步: 系统 硬件语言描述 在前述工作的基础上,采用 VHDL 语言对 VGA显示控制器的三 个层次依次进行描述,具体描述出每个模块,生成具体电路视图。 详述 于 小节中。 第四步: 系统 仿真验证 经过前三步之后,系统设计基本完成,需要对系统主要功能进行仿真验证,更进一步分析状态机、电路逻辑和时序配合等是否正确。 详述于。 系统 功能 结构设计 CRT 显示器 VGA 显示控制器 用户输入接口 桂林电子科技大学实训(论文)报告用纸 第 7 页 共 36 页 图 4 VGA显示控制器系统 功能 结构框图 VGA 显示控制器的输入是用户控制信息,如显示模式的切换命令、 汉字、图形 和图像 移动的控制命令等。 控制器根据用户 的输入信息,决定工作模式 功能 ,这里定义为汉字 模式、 图像 模式、色彩模式、用户模式 的功能。 用户模式中,还应根据用户的输入控制图形的运动方向。 而 颜色信息的产生、显示器扫描同步信号等由 VGA 控制器产生,其输出为 CRT 显示器。 如图 4 所示。 系统 层次模块划分 系统划分为三层,自顶向下分别是顶层模块、 各部分控制 模块、用户模式底层模块。 顶层描述了整个系统的功能和运行; 各部分控制 模块实现系统中各个独立而完整的功能部分;第三层为第二层的子模块,用于扩展第二层的功能,具体负责用户模式的实现。 每个层次可用一个或多个具体模块加以实现。 然后从逻辑上划分出各层次的具体模块,分别 如下。 顶层模块 作用为集成子模块功能,控制子模块的连接和耦合信号。 定义实体为VGAController,在其中例化子模块。 顶层模块 VGAController 在 数字系统中属于控制器模块,其设计是数字系统设计的核心。 子 模块 中包括二层和三层设计中的 八 个模块,各模块间存在信号的传递,其中时钟信号由 Clock 产生,驱动其他各个模块,像素位置信号由 PixelCNT 产生,输出到VGAColor、 VGASig、 HanziMode、 ImageMode 以及 UserMode 模块,作为产生颜色图像信号和扫描同步消隐信号的依据, VGAMode 模 块决定当前的模式状态,输出当前需要显示的颜色图像信号。 顶层模块 和子 模块 的耦合关系 ,一方面, VGAController 获取输入信号, 传递给子模块 ,其中输入控制信号 sw0 和 sw1 传递给 VGAMode 用以控制状态的转移, S0、 S1 状态分别控制显示汉字模式 HanziMode 和图像动态显示模式 ImageMode, sw2~ sw17 传递给VGAColor 用以控制产生纯色 彩 , bt0~ bt4 传递给 UserMode 用以控制用户自定义图形图像。 另一方面, VGAMode 将当前颜色图像信号、 VGASig 将行场同步和消隐信号输出到VGAController,控制器再输出到 VGA 接口,以控制 CRT 显示器。 当然,以上信号的传递是基于逻辑和系统设计的角度加以分析的,顶层设计实际是逻辑概念,并非有实实在在的电路,实际生成电路时信号是直接连线的传递的。 各部分控制 模块 桂林电子科技大学实训(论文)报告用纸 第 8 页 共 36 页 具体实现顶层模块的描述,包括的功能主要是产生时钟信号,状态机的定义和状态的转移,产生像素位置信号,并根据不同的状态和像素位置产生 RGB 颜色信号。 由此,可定义如下模块: VGAMode、 Clock、 PixelCNT、 VGASig、 VGAColor、 HanziMode、 ImageMode。 顶层状态机 模块 VGAMode 该模块 定义 了 顶层状态机, 有 四种状态分别为 汉字 模式 S0、 图像 模式 S 色 彩 模式 S用户模式 S3。 根据拨码开关 SW0 和 SW1 的四种组合选择各模式,完成状态的转移。 根据当前状态选择 VGAColor 模块送入的多个颜色图像信号,发送给 VGA 接口 RGB 端口。 输入:拨码开关 SW0、 SW1 的值。 输出:送往 VGA 接口的 RGB 颜色信号。 时钟控制 模块 Clock 作分频,由 50MHz 的板级输入得到系统所需的 25MHz、 100Hz 和 1Hz时钟信号。 输入: 50MHz 晶振信 号。 输出: 25MHz、 100Hz、 1Hz 时钟信号。 像素控制 模块 PixelCNT 产生像素位置信号。 为 VGAColor 模块产生颜色和图像作定位参考。 输入: 25MHz 时钟信号。 输出:行和列像素位置信号。 同步信号控制 模块 VGASig 根据行列像素位置输出 VGA 接口标准中定义的行列同步负脉冲信号和行列消隐信号,两种信号输入到 VGA接口中可控制 CRT 显示器的扫描。 输入:行和列像素位置信号。 输出: VGA 扫描同步信号和消隐信号。 颜色信号控制 模块 VGAColor 产生所有状态的颜色和图像信号,输出到 VGAMode 模块进行选择后送 VGA 接口。 为实现 汉字 模式 S0、 图像 模式 S 用户模式 S3 状态 下复杂的用户图像输出,定义了子模块 HanziMode、 ImageMode 、 UserMode,专门负责用户自定义颜色和图像的产生。 输入:行和列像素位置信号,用户颜色控制信号 SW2~ SW17。 输出: S0、 S S S3 状态的颜色图像信号 ,16 位 色 共 65536 种 色 彩。 其中 S2 是 色 彩 模式 状态 ,由拨码开关 SW2~ SW17 分别代表 RGB 三基色,每个 R、 G基色 5个比特 , B 基色 6个比特,只要在 VGAColor 中读取出这 5 个比特组合 成为颜色码输出到 VGA接口即可。 因而是容易实现的。 汉字显示控制 模块 HanziMode 将需要显示的汉字 或 图像 信号发送到 VGA 接口,有 2种方法:一是对像素进行计数后,将计数数值 (像素信息 )直接赋值给 RGB(颜色信号 );二是使用 FPGA 内部的存储资源Lpm_Rom 来存储显示内容的像素信息,之后,经过程序将显示信号发送到 VGA 接口,实 桂林电子科技大学实训(论文)报告用纸 第 9 页 共 36 页 现汉字 或 图像的显示。 在 汉字模式下,主要是 先 将多个一定大小字体的汉字以扫描图片 的方式取模, 生成mif 文件供 Lpm_Rom 使用,由 VGAColor 模块传送过来的 hpos(行 计数器值 )、 vpos(列 计数器值 )及相关控制信号计算出正确的内存地址 romaddr, 再 从 rom 中取出所需要的像素点的三基色数据。 图像显示控制 模块 ImageMode 图像模式跟汉字模式显示原理一样, 在 640*480分辨率的显示器上开辟一 64*64 的显示区域来显示图片,因为显示的图片的大小为 64*64。 在此区域以外显示指定颜色,例如黑色、蓝色等,作为一个背景色显示。 此外在本模块中,通过对 ROM 内存地址的控制,实现了图片的动态显示功能。 汉字 模式 和图像模式 均 以图片形式嵌入 ,其实现思路 大体 一致,差别仅仅在于 图像模式多了动态 显示的功能,其控制相对复杂一些, 以下通过一段关键代码详细讲解其实现原理。 romaddr_control = (vt(5 downto 0)count_tempv(5 downto 0)) amp。 (ht(5 downto 0)count_temph(5 downto 0))。 注: romaddr_control 为从 rom 中取数据时所需要的地址,它对应着图片的每一个像素点的三基色数据; vt(5 downto 0)和 ht(5 downto 0)分别表示取 vt(9 downto 0)、ht(9 downto 0)的后 6 个二进制位来做运算。 count_tempv(5 downto 0)和count_temph(5 downto 0)同理可以理解其含义。 Vt、 ht 实际上可以分别理解为屏幕显示的行和列计数器, count_tempv 和 count_temph 可以分别理解为图片在屏幕上显示的起始行和列坐标。 以上模块分别由各个 Component 具体实现,由一个 Package 进行封装。 用户模式 底层模块 考虑到用户模式功能较多,仍需采用状态机设计,故将其独立出来,作为第三 层的模块加以封装和实现,实体定义为 UserMode。 完成系统拓展部分 中用户模式下的 3 种子模式。 子模式的状态分别定义 US0、 US US2。 子模式 US0是 沿固定轨迹运动模式, 即 固定图形 或字符 沿水平方向运动,行运动到边界后折回到下一行继续水平运动; 子模式 US1是反弹 球 模式 ,即 固定图形 或字符 在矩形屏幕做内直线运动,到边界后沿反射角方向反弹,周而复始; 子模式 US2是 受控运动模式, 即 使用上下左右 4个按键控制固定图形 或字符 在屏幕内的运动方向。 子模式也采用状态机的方式进行设计。 状态转移图如图 5所示。 转移条件均是子 模式切换按键按下。 桂林电子科技大学实训(论文)报告用纸 第 10 页 共 36 页 图 5 用户模式状态转移图 UserMode 模块的输入行列像素位置信号 hpos 和 vpos、按键控制信号 bt0~ bt4,首先根据 hpos 和 vpos 画出静态的图形,由于绘制圆形色块耗费的器件资源电路 板无法提供,这里选择了画正方形色块。 定义一个二维位置坐标变量( hmov, vmov)为方块中心,画图时以( hpos, vpos)、( hmov, vmov)联立不等式可确定屏幕内一块区域的坐标点,在这一区域输出某种颜色值,其余区域输出黑色即可显示一个静态的色块。 当需要色块运动时,只要改变 二维变量( hmov, vmov)值即可实现横向和纵向的运动。 因而动态图形的设计,关键在于在 US0、 US US2 状态下以不同的方式设法控制( hmov, vmov)的运动方向和速度。 子模式切换时采用了控制按键 bt4,需要进行按键防抖动设计。 子模式 US0是 沿固定轨迹运动模式, 即 固定图形 或字符 沿水平方向运动,行运动到边界后折回到下一行继续水平运动; 只要判断 hmov 在小于 640 像素区域内,就不断增大 hmov 就能实现横向移动,当移动到右边界,即到达 640 像素,则将 vmov 增加,使得竖向移动, hmov 同时赋值为 0即可使 色块折回左边界。 子模式 US1是反弹 球 模式 ,即 固定图形 或字符 在矩形屏幕做内直线运动,到边界后沿反射角方向反弹,周而复始; 此种运动的关键点在于到达左右边界时使得 hmov 反向,到达上下边界时使得 vmov 反向。 抓住这一核心点,可以使得设计大为简化,否则要反映反弹运动完整过程需要定义多种状态,初步估计 16 种状态可以完整描述。 采用简化的方案,设置两个标志位 borderlr 和 borderud 分别表示左右边界和上下边界,可认为设定边界为 ‘ 1’ 时向 hmov 和 vmov 减小方向运动,反之则增大方向运动,当到达四个边界中任意边界 时(容易根据 hmov 和 vmov 值判断),对应的 borderlr 或者 borderud区反,这样就使得色块反弹了。 子模式 US2是 受控运动模式, 即 使用上下左右 4个按键控制固定图形 或字符 在屏幕内的运动方向。 实现思路也是很明确的,即判断按键是上下左右中的哪个,然后做相应的运动,使 hmov 和 vmov 对应改变即可。 四个方向看作四种状态,依旧采类似顶层状态。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。