1、 电子课程设计电子课程设计 六进制六进制字符发生器字符发生器 1 目目 录录 一、设计任务及要求 2 二:总体框图及设计方案 2 三:选择器件.9 四、功能模块13 1、Address 模块13 2、分频器14 3、六进制计数器(方法二)16 4、ROM16*128 存储器17 五、总体设计电路21 六、心得体会.22 2 字符发生器字符发生器 一、设计任务及要求一、设计任务及要求 1. 设计任务:利用实验箱上 16*16 点阵,设计字符发生器,可以循 环显示预置字符 :身要动,心要静。 2. 设计要求: (1)利用 VHDL 编写字符扫描驱动电路。 (2)设计一个可以自动循环显示 10 个字
2、符的电路。 (3)编写预置字符的 rom程序生成模块接入电路。 二:总体框图二:总体框图及设计方案及设计方案 方案一:方案一: 1、设计思路:设计思路: 此电路由六进制计数器, ROM 存储器, address 计数器模块这四部分构成。 字符要用 16*16 点阵显示所以涉及到行列的显示,根据字符将 16*16 点阵中所 需点亮的二极管的内容存储到 ROM 存储器中,同时列依次扫描,计数器对 16*16 点阵显示 ROM 存储器 六进制计数器 分频器 时钟信号 时钟脉冲信号 Addresss 计 数 器 模 块 3 16*16 点阵显示器的行进行循环计数。 2、各模块的作用、各模块的作用 分频
3、器的作用是将 50Mhz的信号分为 25Khz信号,提供给 Address 计数器 模块与 ROM 存储器作为所需的时钟信号。 Address 计数器的作用是在时钟信号作用下,将从 ROM 中读出的信号对应 正确的位置上的数值显示在点阵上。Reset 是复位端,起复位作用,低电平时起 作用。输出端 qout150对应点阵上的 L0-L15,为点阵的行驱动信号输出, addr30的增加依次对列扫描。 六进制计数器的输出与 Address 计数器的输出共同作用在 ROM 的输入, 由 此决定 qout150的输出,使得输出字符循环显示。实现六进制计数器有三种 方法,具体将在下面部分做详细介绍。 R
4、OM 是一个 ROM128*16 的存储数据的具有读写功能的存储器,设计中存 储着“身要动,心要静”六个字,在 addr60输入相应地址时读取 ROM128*16 中相应的数据然后经 q150输出。主要是存储数据。 方案二:方案二: 1、 原理图原理图 c l k e n a b l e s e l 3 . . 0 h 0 7 . . 0 h 8 7 . . 0 z f c i n s t V C C c l k I N P U T V C C e n a b l e I N P U T s e l 3 . . 0 O U T P U T h 0 7 . . 0 O U T P U T h 8
5、 7 . . 0 O U T P U T 图一 2、 生成该原理图的程序生成该原理图的程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity zfc is port(clk,enable: in std_logic; sel: out std_logic_vector(3 downto 0); 4 h0,h8: out std_logic_vector(7 downto 0); end entity; architecture behav of zfc is signal lie
6、: std_logic_vector(3 downto 0); signal next1: std_logic_vector(2 downto 0); begin a1: process(clk,enable) begin if clkevent and clk=1 then if(enable=1 ) then if lie“0000“ then lieh0h0h0h0h0h0 “ROM256X16.mif“, intended_device_family = “Cyclone“, lpm_hint = “ENABLE_RUNTIME_MOD=NO“, lpm_type = “altsyncram“, numwords_a = 256, operation_mode =