1、 EDAEDA 课程设计课程设计 -16X16 字符发生器 一一设计任务及要求设计任务及要求 1.设计任务:利用实验箱上 16X16 点阵,设计字符发生器,可以循环显 示预置字符:同心协力。同心协力。 2.设计要求:(1)利用 VHDL 编写字符扫描驱动电路; (2)设计一个可以自动循环显示 4 个字符的电路; (3)编写预置字符的 rom 程序生成模块接入电路。 二二. .总体框图总体框图 设计思路: 此电路由八进制计数器,ROM 和 ADDRESS1 这三部分构成。 ADDRESS1 的作用是在时钟 clk 的作用下将从 rom 中读出的信号对应正确的 写在 1616 的点阵上。Reset
2、 是复位端,起复位作用。输出 addr41选中 16X16LED 点阵的对应列,随着 addr41值得增加,从左往右依次选中点阵的 各列 addr0 则决定输出是在高位还是在低位。FLEX10 的 lout0-7 和 hout0-7 分 发光二极 管显示 列选线产生电路 EPROM 存储器 地址计数器 时钟脉冲源 行 选 线 产 生 信 号 1 别与 LED 点阵的低八位 L0-7 和高八位 L8-15 相连。 八进制计数器是在 addr70输出 0-3 的循环计数,由此输出与 ADDRESS1 的输出 addr40共同作为 rom 的输入地址,以此决定 q70的输出(即 ADDRESS1 的
3、 DIN70的输入) ,此八进制计数器是由 74LS160 十进制计数器修 改得来的,输出由原来十进制的 0-9 循环输出变为八进制的 0-3 循环输出。 Rom 是一个用来存储数据的具有读写功能的的存储器,在此电路中的作用是 存储“同心协力”四个字.在 addr70输入相应的地址时读取 rom 中的相应的 数据,然后在输出端 q70输出。 在时钟脉冲的作用下,地址计数器计数,EPROM 相对应的地址单元中的代 码输出,以驱动列选通线产生电路。地址计数器同时又为行选通线产生电路。地 址随着地址计数器计数值的变化,发光二极管显示屏逐行扫描,显示屏上显示出 字符或图案。 各模块功能: 1) ROM
4、 是只读存储器存放字符的代码, 他是字符显示器的核心部件。 2)发光二极管显示屏用来显示字符或图案,他是由若干发光二极管组成的点 阵式显示屏。 3) ADDRESS1 的作用是在时钟 clk 的作用下将从 ROM256*8 中读出的信号对应正 确的写在 1616 的点阵上。 三三 选择器件与功能模块选择器件与功能模块 1.用来构成输出八进制的 74LS160 十进制计数器 (1).74LS160 器件图 2 A.B.C.D 为输入端; LDN 为置数端;ENT 与 ENP 为使能控制端;CLRN 为置零端; RCO 为进位输出端; QA.QB.QC.QD 为输出端;CLK 为脉冲信号输入端.
5、(2). 74160 内部结构图内部结构图 (3).74160 功能表功能表 2ADDRESS1 模块设计文件模块设计文件 ADDRESS1.VHD CP CLRN(RD 非) LDN(LD 非) EP ET 工作状态 X 0 X X X 置零 1 0 X X 预置数 X 1 1 0 1 保持 X 1 1 X 0 保持(C=0) 1 1 1 1 计数 3 说明说明: CLK 为时钟输入端口; RESET 为置零端; DIN70为接受 ROM 数据信号端口; AD40为片选地址输出; HOUT70,LOUT70分别为高八位断驱动和低八位短驱动. Address1 设计程序: LIBRARY IE
6、EE; USE IEEE.std_logic_1164.ALL; USE IEEE.std_logic_unsigned.ALL; ENTITY address1 IS PORT( clk,reset:IN STD_LOGIC; ad :OUT STD_LOGIC_VECTOR(4 downto 0); din:in STD_LOGIC_VECTOR(7 DOWNTO 0); hout,lout:out STD_LOGIC_VECTOR(7 downto 0); END address1; ARCHITECTURE a OF address1 IS BEGIN process(clk,din,reset)敏感信号 VARIABLE Q1:STD_LOGIC_VECTOR(4 DOWNTO 0);-标准逻辑变量 BEGIN IF CLKEVENT AND CLK=1THEN IF RESET=0OR(Q1=“