基于FPGA的点阵列LED控制器_第1页
基于FPGA的点阵列LED控制器_第2页
基于FPGA的点阵列LED控制器_第3页
基于FPGA的点阵列LED控制器_第4页
基于FPGA的点阵列LED控制器_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2010 届届毕业毕业生生 毕业论毕业论文文 题题 目目: : 基于基于 fpga 的点阵列的点阵列 led 控制器控制器 院系名称:院系名称: 信息科学与工程学院信息科学与工程学院 专业班级:专业班级: 电子信息科学与技术电子信息科学与技术 0606 级班级班 学生姓名:学生姓名: 高万领高万领 学学 号:号: 2006436011220064360112 指导教师:指导教师: 焦素敏焦素敏 教师职称:教师职称: 副教授副教授 2010 年年 6 月月 2 日日 i 摘摘 要要 近年来,led 显示屏作为一种高科技产品广泛应用于诸多领域,日益引起 人们的重视。尽管目前 led 显示屏的应用范

2、围越来越广,但是在应用中也暴露 出一些新的问题,如每台 led 文字显示屏需要一台计算机控制等。如今微电子 技术的发展,特别是可编程逻辑器件的发展,使得微电子厂家可以为用户提供各 种规模的可编程逻辑器件,使设计者通过设计芯片实现电子系统功能。 本系统利用数字系统设计自动化(eda)技术实现了全硬件方式的 led 点阵 显示。利用 fpga 内部的物理资源,将只读存储器 rom 和主要功能模块设计 在 fpga 内部。本设计由扫描控制模块、只读存储器 rom 和 fpga 外面的 led 点阵显示模块、分频模块构成。扫描控制模块是整个设计系统的核心,它 用动态分时扫描技术使 led 点阵模块显示

3、字符,通过地址线控制字模信息的输 出,通过译码器确定某一行被选定接受字模信息,用某一频率扫描完 led 点阵 的所有行,便完成了一个字符的显示,修改存储器的地址区间转向下一字符的 显示。分频器的作用是产生不同的频率。fpga 定义的只读存储器 rom 中保存 了要显示的汉字的数据,并以 16 位的数据宽度输出到 led 阵显示模块的行端, 配合列扫描控制共同完成汉字的滚动显示。充分显示了 eda 技术设计的灵活性, 同时也大大提高了系统的集成度和稳定性。 关键词关键词: vhdl;fpga;eda技术;led ii title lattice design of led system base

4、d on fpga abstract led(light emitting diode) display screen attracts more and more people in recent years as a high technology production. with the led display screen widely used in many fields, there exposed some new problems in the application: one computer can only control a led display screen.th

5、e development of the micro- electronics technique, especially the development of the programmable logic device, enable the microelectronic producer to offer the programmable logic devices of different scale to user, make the designer realize the function of the electronic system through designing th

6、e chip. this system is composed of a scanning control module, a rom, an led plot array module, crossover module。scanning control module is the core of the whole design system, with its dynamic time-sharing technology to scan led dot-matrix display modules image, through the address line chinese mode

7、l control the output of information through the decoder to determine whether a line has been selected to accept chinese model, scanned all firms of led dot matrix, it completed an image display, modify memory addresses a range of images to the display。crossover produce different frequency. the fpga-

8、defined rom preserves the data of the chinese characters that will be displayed, and it sends the data, by way of a 16-bit data width, to the end of the led plot array module. with the array-scanning controller, the chinese characters achieve their rolling display.this system has realized the entire

9、 hardware way led lattice demonstration using the number system design automation (eda) technology. using fpga internal physics resources, non- erasable storage rom and major function module design in fpga. it had demonstrated fully the eda technical designs flexibility, simultaneously also greatly

10、enhanced systems integration rate and the stability. keywords: vhdl, eda, lattice led iii 目目 录录 摘 要 .i abstract.ii 目 录.iii 1绪论.1 1.1研究背景.1 1.2研究目的.3 2方案设计.4 2.1fpga 的介绍.4 2.2 基于 fpga 设计的方案论证.5 2.3 系统结构设计 .7 2.3.1 系统的结构 .7 2.3.2 fpga 的顶层设计.8 3 子模块的设计.9 3.1 扫描控制模块 .9 3.1.1led 点阵原理.9 3.1.2 汉字的存储.10 3.1

11、.3 汉字的显示.11 3.1.4 滚动速度的控制.14 3.1.5 存储模块.15 3.1.5.1使用参数化组件 lpm_rom来实现.15 3.1.5.2用fpga内部的逻辑单元设计一个 rom.17 3.1.6 存储器的源程序及仿真:.18 3.2 分频电路模块.19 3.2.1 解决毛刺.19 3.2.1.1改变输入信号消除毛刺 .20 3.2.1.2 通过d触发器消除毛刺 .20 3.2.2 关键部分 vhdl 程序 .21 iv 3.3 多路选择模块.22 结 论.24 致 谢.25 参考文献.26 1 1 1绪论绪论 1.1研究背景研究背景 在现代生活中,越来越多的 led 点阵

12、列显示器被用于文字广告和信息发布。 使用 led 点阵列显示器发布文字消息具有及时、醒目的优点,因此其应用的范 围越来越广。 目前,国内从事 led 显示屏生产的企业众多,同时,受到外资企业 led 显示屏价格过高的影响,在中国 led 显示屏市场上多以本土企业为主。目前, 本土 led 显示屏生产企业除供应国内需求外,还不断把产品出口到国外市场。 而近年来,受到成本压力的影响,国际上一些知名的 led 显示屏企业也逐步把 生产基地移到了中国,如巴可在北京设立了显示屏生产基地,lighthouse 在惠州 也拥有生产基地,daktronics、莱茵堡都在国内设立了生产工厂。随着国际 led 显

13、示屏生产大厂不断把生产基地转移至国内, 加之国内众多的 led 显示屏本 土企业,中国正在成为全球 led 显示屏的主要生产基地。 我国的 led 显示屏产业经过几年的发展,基本形成了一批具有一定规模的 骨干企业。据不完全统计,至 1998 年底,年度销售总额在 1000 万元以上的企 业有 20 多家,其销售总额达 6 亿元左右,占行业市场总额的 85%以上。全国从 事 led 显示屏的各类企业有 100 余家,从业人员近 6000 人,行业年度销售总 额近 8 亿元人民币,1996 年、1997 年的增长速度均保持 40%左右,1998 年略有 回落。在国内市场上,国产 led 显示屏的市

14、场占有率近 100%,国外同类产品 基本没有市场,四十三届世乒赛主会场天津体育中心、京九铁路、北京西客站、 首都机场、浦东机场等,均由国内代表企业中标。 我国 led 显示技术产业在规模发展的同时,产品技术推陈出新,一直保持 比较先进的水平。90 年代初即具备了成熟的 16 级灰度 256 色视频控制技术及无 线遥控等国先进水平技术,近年在全彩色 led 显示屏、256 级灰度视频控制技 术、集群无经线控制、多级群控技术等方面均有国内先进、达到国际水平的技 术和产品出现;led 显示屏控制专用大规模集成电路也已由国内企业开发生产 并得到应用。 led 显示技术的应用涉及社会经济的许多领域,主要

15、包括:证券交易、金融 信息显示; 2 机场航班信息显示。港口、车站旅客引导信息显示;体育场馆信息显示;道路交 通 信息显示;邮政、电信、商场购物中心等服务领域的业务宣传;广告媒体新产 品. 在国家产业扶持、台商加入及国际巨头三方推进下,led 产业在我国已具相当 规模,到 2004 年底全国已有 led 各类企业约 3500 余家,从业人员 50 余万人, led 器件产量 400 亿只/年以上,已初步形成从外延片生产、芯片制备到器件封 装集成应用比较完整的产业链,生产企业重点分布在长三角、珠三角、江西、 福建及环渤海湾等地区。据统计,2004 年中国大陆的 led 需求量约 240 亿只,

16、应用市场达 300 亿元,2005 年总需求量为 300 亿只,应用市场达到 360 亿元。 led 生产主要有 3 个环节,就是发光半导体外延片的生长、芯片制作和封 装,目前国内 3 个环节都有,尤其是外延片的生长环节,我国与世界一流水平 还有较大的差距。从产业价值链的情况看,高质量的外延片已经成为中国 led 产业发展的主要制约环节,中国的 led 产业面临一个巨大的问题就是技术水平 太低,中国 led 产业刚刚处于起步阶段,不但与日本、美国、欧洲有巨大的差 距,即便是与中国台湾相比,也相去甚远,国内 led 的产业规模在 100 亿左右, 仅是日本日亚化学一家的一半多一点。目前国内有十几

17、家作 led 外延芯片和芯 片封装的公司,产业规模较小,最大的也不过 2、3 亿的产值。 我国的外延片生长技术主要源于美国、基本上是进口美国的有机金属化学 气相沉淀(mocvd)装备,这些装备在美国就不是一流的装备,在整个 led 产业外延片的生长、芯片、芯片封装 3 个环节中,外延片生长投资要占到 70%,外延片成本要占到封装成成品的 70%,同时外延片生长技术的人才全世 界都缺乏,简单的说,外延片的水平决定了整个 led 产业水平,国内近几年也 陆续引进了 50 多台 mocvd 装备,均处理大生产工艺摸索阶段,一旦工艺成熟, 则会上 10 倍地增大装备数量形成规模生产,市场需求巨大。 通

18、过863计划等科技计划的支持,我国已经初步形成从外延片生产、芯片 制备、器件封装集成应用比较完整的产业链,现在全国从事半导体 led 器件及 照明系统规模生产的企业有 400 多家,led 器件封装在国际市场上已占有相当 大的份额。 预计未来 5-8 年内,中国将会成为 led 技术产业一个投资热点地区,我国 3 led 封装产业将占全球市场的 70%;新上或扩建规模生产线约 100 余条(其中 新建年产 5 亿只以上的生产线将有 15-20 条) ;所需装备从外延片生产过程中的 mocvd 装备到外延片的测试装备到芯片生产中的光刻、蒸发、干法腐蚀、减 薄等装备,再到芯片后续工艺中的芯片安放、

19、引线焊接、划片、测试分选、编 带等约 5000 多台套。因此研究点阵列 led 显示控制器的设计方法具有重要的 理论和现实意义。 1.2研究目的研究目的 采用传统方法设计的点阵列 led 显示控制器,通常需要使用单片机、存储 器和制约逻辑电路来进行 pcb(印制电路板)板级的系统集成。尽管这种方案 有单片机软件的支持较为灵活,但是由于受硬件资源的限制,未来对设计的变 更和升级,总是难以避免要付出较多研发经费和较长投放市场周期的代价。 随着电子设计自动化(eda)技术的进展,基于可编程 asic 器件的数字电 子系统设计的完整方案越来越受到人们的重视,并且以 eda 技术为核心的能在 可编程 a

20、sic 器件上用 vhdl 语言进行系统芯片集成的新设计方法,也正在快 速地取代基于 pcb 板的传统设计方式。 本系统利用数字系统设计自动化(eda)技术实现了全硬件方式的 led 点阵 显示。利用 fpga 内部的物理资源,将只读存储器 rom 和主要功能模块设计在 fpga 内部。充分显示了 eda 技术设计的灵活性,同时也大大提高了系统的集 成度和稳定性 另外 eda 开发工具功能的强大性更有利于电子系统设计的方便。在 eda 开发工具软件美国 altera 公司的 max+plus ii 的支持下,本设计通过了编译、 适配和软件仿真验证。最后载入硬件系统证明了它的正确性。 4 2 2

21、 方案方案设计设计 2.1fpga 的介绍的介绍 fpga是现场可编程门阵列(field programmable gate array)的简称,与之 相应的cpld是复杂可编程逻辑器件(complex programmable logic device)的 简称,两者的功能基本相同,只是实现原理略有不同,所以有时可以忽略这两 者的区别,统称为可编程逻辑器件或cpld/pgfa。cpld/pgfa几乎能完成任何 数字器件的功能,上至高性能cpu,下至简单的74电路。它如同一张白纸或是 一堆积木,工程师可以通过传统的原理图输入或硬件描述语言自由的设计一个 数字系统。通过软件仿真可以事先验证设计的

22、正确性,在pcb完成以后,利用 cpld/fpga的在线修改功能,随时修改设计而不必改动硬件电路。使用 cpla/fpga开发数字电路,可以大大缩短设计时间,减少pcb面积,提高系统 的可靠性。这些优点使得cpla/fpga技术在20世纪90年代以后得到飞速的发展, 同时也大大推动了eda软件和硬件描述语言hdl的进步。 fpga具有掩膜可编程门阵列的通用结构,它由逻辑功能块排成阵列,并由 可编程的互连资源连接这些逻辑功能块来实现不同的设计。 fpga一般由3种可编程电路和一个用于存放编程数据的静态存储器sram 组成。这3种可编程电路是:可编程逻辑模块(clb-configurable lo

23、gic block)、 输入/输出模块(iob-i/o block)和互连资源(irinterconnect resource)。可 编程逻辑模块clb是实现逻辑功能的基本单元,它们通常规则的排列成一个阵 列,散布于整个芯片;可编程输入/输出模块(iob)主要完成芯片上的逻辑与 外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源包括各种长度 的连接线段和一些可编程连接开关,它们将各个clb之间或clb、iob之间以及 iob之间连接起来,构成特定功能的电路。 一般说来,一个比较大的完整的项目应该采用层次化的描述方法:分为几 个较大的模块,定义好各功能模块之间的接口,然后各个模块再细分去具

24、体实 现,这就是top down(自顶向下)的设计方法。目前这种高层次的设计方法 已被广泛采用。高层次设计只是定义系统的行为特征,可以不涉及实现工艺, 因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针 5 对某种工艺优化的网络表,使工艺转化变得轻而易举。 硬件设计需要根据各种性能指标、成本、开发周期等因素,确定最佳的实 现方案,画出系统框图,选择芯片,设计pcb并最终形成样机。 cpld/fpga软件设计可分为两大块:编程语言和编程工具。编程语言主要 有vhdl和verilog两种硬件描述语言;编程工具主要是两大厂家altera和xilinx 的集成综合eda软件(如max

25、+plusii、quartusii、foundation、ise)以及第三 方工具(如fpga express、modelsim、synposys svs等) 。具体的设计输入方式 有以下几种: 1.hdl语言方式。hdl既可以描述底层设计,也可以描述顶层的设计,但它 不容易做到较高的工作速度和芯片利用率。用这种方式描述的项目最后所能达 到的性能与设计人员的水平、经验以及综合软件有很大的关系。 2.图形方式。可以分为电路原理图描述,状态机描述和波形描述3种形式。 有的软件3种输入方法都支持,如active-hdl。max+plusii 图形输入方式只支 持电路原理图描述和波形描述两种。电路原理

26、图方式描述比较直观和高效,对 综合软件的要求不高。一般大都使用成熟的ip核和中小规模集成电路所搭成的 现成电路,整体放到一片可编程逻辑器件的内部去,所以硬件工作速度和芯片 利用率很高,但是但项目很大的时候,该方法就显得有些繁琐;状态机描述主 要用来设计基于状态机思想的时序电路。在图形的方式下定义好各个工作状态, 然后在各个状态上输入转换条件以及相应的输入输出,最后生成hdl语言描述, 送去综合软件综合到可编程逻辑器件的内部。由于状态机到hdl语言有一种标 准的对应描述方式,所以这种输入方式最后所能达到的工作速度和芯片利用率 主要取决于综合软件;波形描述方式是基于真值表的一种图形输入方式,直接

27、描述输入与输出的波形关系。这种输入方式最后所能达到的工作速度和芯片利 用率也是主要取决于综合软件。 2.2 基于基于 fpga 设计的方案论证设计的方案论证 方案一:本系统的 led 点阵模块,共由 1616=256 个 led 发光二极管 组成。如何在该点阵模块上显示汉字是本文设计的关键技术。本设计是采用一 6 种 32 路动态分时扫描技术来实现的。具体方法是,将 4 个 88 数组的显示模 块组合成两个 16 行 16 列的扫描结构并将其串联(如图 2.1 所示)。其行输入 端与 fpga 内的只读存储器 rom 的 16 位数据输出端口相连;32 个列控制端 与两个 4-16 译码器 a

28、、b 的输出相连;而译码器 a、b 的输入端和片选信号又 与 fpga 内的列扫描控制模块的输出端口 scan4-scan0 相连。图 2.1 为方案的结 构框图。 图 2.1 点阵显示控制器结构框图 方案二:vhdl 程序设计的是硬件,他和编程语言的最大区别是它可以 “并发执行”。本设计可以将 led 显示屏要的显示内容抽象成一个二维数组 (数组中的1对映点阵显示屏上面的亮点),用 vhdl 语言设计一个进程将 这个数组动态显示在 led 显示屏上,再利用另一个进程对这个数组按一定频率 进行数据更新,更新的方式可以有多种。因为两个进程是同时进行的(并发执 行),如果对数组中的汉字数据按滚动的

29、方式更新,则可实现汉字的滚动显示。 图 2.2 为该方案的原理图。 二维数组动态显示 图图 2.22.2 方案二的原理框图方案二的原理框图 更新数组数据 7 方案比较:方案一很容易实现,而且占用 fpga 的资源较少。但是由于其 实现方式的局限性,该方案只能实现汉字的滚动显示。方案二中将 led 点阵抽 象成了一个二维数组。可以设计一些比较复杂的算法来控制这个数组,使设计 的系统不但可以滚动显示汉字,还可以扩展一些其它的显示效果。但是方案二 中对数组的处理部分对 fpga 芯片的资源消耗太大,所以最终选择方案一。 2.3系统结构设计系统结构设计 2.3.1 系统的结构系统的结构 图 2.1 是

30、系统的结构框图。本系统选用的 fpga 芯片是美国 altera 公司的 flex1ok 系列的 epf10k10lc84-4。该芯片具有 576 个逻辑单元、84 个引脚, 72 个逻辑阵列块、3 个嵌人式阵列块,是一个高集成度的 fpga 芯片。 系统由 fpga 中的扫描控制模块、只读存储器 rom 和 fpga 外面的 led 点阵显示模块、一个反相器和两个 4-16 译码器构成。其中,dz1, dz2, dz3 ,和 dz4 是 4 个 8 8 的 led 点阵显示模块,由这四个模块组合起来构成了本 系统 16 16 的 led 点阵显示模块。两个 4-16 译码器(74ls154)

31、和一个反相器配 合 fpga 中的行扫描控制模块共同完成了 16 16 点阵显示模块的 32 行的扫描 控制。fpga 中的只读存储器 rom 中保存了要显示的多幅图像的数据,并以 8 位的数据宽度输出到 led 阵显示模块的列端,配合行扫描控制共同完成多幅图 像的显示。 2.3.2 fpga 的顶层设计的顶层设计 将上述的扫描控制模块和只读存储器 rom 在 maxplusii 的图形编辑器中 以图 2.3.2 的关系构成顶层设计,并编译下载到 fpga 中,再按照图 2.3 所示的 系统结构关系构成整个系统,即完成了一个基于 fpga 的 led 点阵显示系统的 全部设计。 8 图 2.3

32、 fpga 顶层原理图 3 子模块的设计子模块的设计 近几年在数字系统设计领域出现了一种全新的设计技术数字系统设计 自动化(eda, electric design automation)技术。该技术借助计算机在图形、数据 及语言处理方面的强大功能,利用计算机来辅助完成数字系统的设计,较原来 传统数字系统设计技术有了突破性的发展。它在设计人口方面能接受符合人们 思维习惯的高级硬件描述语言(如 vhdl)和原来人们已经习惯的逻辑图输人。并 通过 eda 工具软件将其转换成能被可编程逻辑器件接受的数据,将此数据下载 到支持该技术的可编程逻辑器件(如 fpga)上,使其成为一个具有设计要求功能 9

33、的大规模集成电路芯片。该技术具有系统设计效率高、集成度好、保密性强、 易于修改、易于实现等优点,因此而成为当今数字系统设计的主流技术。 本文利用此技术设计一个 led 点阵显示系统。系统利用 fpga 内部的物理 资源,将只读存储器 rom 和主要功能模块设计在 fpga 内部。充分显示了 eda 技术设计的灵活性,同时也大大提高了系统的集成度和稳定性。 3.1 扫描控制模块扫描控制模块 3.1.1 led 点阵原理点阵原理 以下为 88 点阵 led 外观及引脚图及其等效电路,只要其对应的 x、y 轴顺向偏压,即可使 led 发亮。例如如果想使左上角 led 点亮,则 y0=1,x0=0 即

34、可。应用时限流电阻可以放在 x 轴或 y 轴。 图图 3.1 88 点阵点阵 led 外观图外观图 图图 3.2 88 点阵点阵 led 等效等效 图图 10 点阵点阵 led 扫描法介绍扫描法介绍 点阵 led 一般采用扫描式显示,实际运用分为三种方式: (1)点扫描 (2)行扫描 (3)列扫描 若使用第一种方式,其扫描频率必须大于 1664=1024hz,周期小于 1ms 即可。若使用第二和第三种方式,则频率必须大于 168=128hz,周期小于 7.8ms 即可符合视觉暂留要求。此外一次驱动一列或一行(8 颗 led)时需外加 驱动电路提高电流,否则 led 亮度会不足。 3.1.2 汉

35、字的存储汉字的存储 用动态分时扫描技术使 led 点阵模块显示图像,需要进行两步工作。第一 步是获得数据并保存,即在存贮器中建立汉字数据库。第二步是在扫描模块的 控制下,配合行扫描的次序正确地输出这些数据。获得图像数据的步骤是,先 将要显示的每一幅图像画在一个如图 3.3 所示的被分成 1616 共 256 个小方格 的矩形框中,再在有笔划下落处的小方格里填上“1”,无笔划处填上“0”, 这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布,再将此分 布关系以 3216 的数据结构组成 64 个字节的数据,并保存在只读存贮器 rom 中。以这种方式将若干个汉字的数据贮存在存贮器内,就完成

36、了图像数据库的 建立工作。 图图 3.3 1616led 点阵模块点阵模块 11 然后,依次对多汉字抽取像素信息,并按序排队存放起来,便可得到一个 待显示数据序列。将这个序列存到 rom 中进一步通过寻址的方法来控制该数据 序列的释放过程,就可实现在 led 发光二极管点阵上滚动显示多汉字信息的目 的。 由图 3.4 可知,某一时刻能在显示数据序列中定位待显示数据的地址指针可 用下式计算: addr=n+m (式 3.1) 3.1.3 汉字的显示汉字的显示 第二步工作的步骤是:先在扫描模块的控制下,由地址线确定每次由 rom 送出某一列的 16 个 led 所要显示的汉字的控制字节数据,同时由

37、扫描模块输 出的 5 位扫描码经两个 4-16 译码器解码后决定相应的某一列可以被点亮,而另 外 31 列都不能被点亮。该状态持续约 0.4 毫秒后,就接着进行下一行的扫描。 当完成了一次 32 行的扫描后,也就完成了一帧画面的显示。重复上述过程不断 修改 rom 的地址区间的起始地址,转向下一幅画面的数据传送和显示。如此进 行,就可以在 led 点阵模块上滚动显示 rom 中存储的汉字。 扫描控制模块扫描控制模块 vhdl 程序:程序: library ieee; use ieee.std_logic_arith.all; use ieee.std_logic_1164.all; use i

38、eee.std_logic_unsigned.all; 图图 3.4 滚动显示多汉字信息的原理示意图滚动显示多汉字信息的原理示意图 12 entity sc is port (clk,reset: in std_logic; addr: out_std_logic(7 downto 0); scan:out_std_logic(4 downto 0) ); end sc; architecture corn_arc of sc is begin process(reset_n,clk_scan) -扫描信号的输出 begin if(reset_n=0)then cnt=31; elsif(ri

39、sing_edge(clk_scan)then if(cnt=cnthigh)then cnt=0; else cnt=cnt+1; end if; if(cnt =cnthigh-1)then flag_scan=1; else flag_scan=0; end if; end if; end process; process(reset_n,clk_scan,cnt) begin if(reset_n=0)then scan scan scan scan scan scan = zzzzz; end case; end if; end process; - process(reset_n,

40、clk_scan,cnt,x) -列数据的输出 variable index:integer range 0 to l_sz; begin if(reset_n=0)then data=0000000000000000; elsif(rising_edge(clk_scan)then index:=(cnt+x) mod l_sz); data=ledsj(index); end if; end process; 图 4.1 扫描控制模块 3.1.4 滚动速度的控制滚动速度的控制 将 led 点阵看成一个滑窗。通过这个“滑窗”每次能“看到”32 个存储单 元(2 个汉字长度)的信息。只读存储器

41、 rom 中链式的存放了若干个汉字的点 14 阵信息,“滑窗”在这若干个汉字点阵信息上面滑动,我们通过“滑窗”看到 的就是汉字的滚动显示。 在用 vhdl 编程的时候,可以定义一个变量 x 作为“滑窗”在 rom 上的 起始地址,设计一个进程按一定的频率对 x 进行累加,再设计一个进程将以 x 为起始地址的长度为 32 的 rom 中的区域动态显示在 led 点阵中。显然 x 累加 的速度决定了汉字的滚动速度。 滚动速度的滚动速度的 vhdl 程序:程序: library ieee; use ieee.std_logic_1164.all; entity fen2 is port(clk: i

42、n std_logic; clkk: out std_logic); end fen2; architecture prosess of fen2 is begin process(reset_n,clk_scan,flag_scan) -x 的控制进程 variable cntx:integer range 0 to 50; begin if(reset_n=0)then cntx:=0; x=0; else if(rising_edge(clk_scan)then if(flag_scan=1)then if(cntx=n8 or cntx=cntxhigh)then -通过 n 来控制

43、cntx 的计数 范围 cntx:=0; else cntx:=cntx+1; end if; if(cntx=n8)then -通过 n 来控制 x 的增加 15 if(x=xhigh)then x=0; else xlpm_rom,就会出现如图 3.6 所示的“mega wizard plug-inmanager-lmp rom” 系列对话框。在该系列 对话框中设置输出数据线宽度为 11,存储单元的数量为 2048。并完成相应的配 置环节就获得了要求的 256 字节的只读存储器 rom。只读存储器 rom 中的初 始化数据就是本系统的汉字数据库数据。 该初始化数据的建立是在上述的 lmp_

44、rom 设计过程中通过指定一个后缀 名为.mif 的初始化文件来实现的。该文件是设计者事先在文本编辑器中建立的, 其 vhdl 格式和关键代码示意如下: width=16;数据线的宽度为 16 位 depth=2048;有 2048 个字节存储单元,对应 11 根地址线宽度 address radix=hex;以 16 进制表示 data radix = hex; contentbegin 00 : 2f;以 16 进制表示的 rom 内的各字节单元的地址和保存的数据 01 : 6c; 02 : f8; fd : ee; fe : 72; 17 ff : 00; end; 3.1.5.2 用用

45、fpga内内部部的的逻逻辑辑单单元元设设计计一一个个 rom 本系统也可以定义一个常数数组来存储汉字信息。数组的下标对映 rom 的 地址。下面是一个容量为 l_sz16 的 rom 内存的例子,常数 l_sz 决定了 rom 的地址空间, rom 的每一个数据单元存储 16 位数据,可以很方便的驱 动 1616 的 led 点阵。定义这个 rom 的时侯必须初始化全部存储单元。 type array_2 is array(0 to l_sz)of std_logic_vector(15 downto 0); constant ledsj:array_2:=( (001000000000000

46、0), (0010001111111111), 图图 3.6 “megawizard plugl-in manager_lmp rom”对话框对话框 18 (0010001000000000), (0000000000000000); 两种方案存储汉字信息,以及输出数据驱动 led 点阵的原理和相差不大, 第一种方案是利用了 fpga 芯片中的嵌入式数组块,可以生成大容量的 rom 来 存储较多的汉字信息。第二中方案生成的 rom 容量受到了 fpga 芯片内部逻辑 单元数量的限制,但是它的操作性更好。由于本系统只是验证可行性的一个设 计,不需要建立大的字库所以采用第二种方案。 3.1.6 存

47、储器的源程序及仿真存储器的源程序及仿真: library ieeee; use ieee。std-logic-1164.all; use ieee。std-logic-arith.all; use ieee。std-logic-unsigned.all; entity rom is port(addr:in std-logic-vector(9downto0) ; clk:in std-logic; dout:out std-logic-vector(7downto0) ) ; end entity rom; architecture art of rom is begin process(c

48、lk) begin i f(clkevent and clk=1)then case addr is when “0000000000”=doutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=”00000000”; end case; end if; end process; end architecture art 图 3.7 存储器程序的仿真 3.2分频电路分频电路模块模块 3.2.1 解决毛刺解决毛刺 fpga 与单片机相比,一个非常明显的优势就在于它的高速性。但是因为 很

49、多外围器件的驱动需要低频的时钟(若时钟频率太高,则键盘扫描容易出错, 数码管会闪烁和不稳定等),所以需要用到分频电路。 该电路主要包含有一个计数器模块和一个译码输出模块,该电路是通过计 数器模块实现分频的。比如要从 12mhz 的全局时钟得到 100hz 的时钟,必须进 行 120000 倍分频。但是这么大的分频需要仿真时间很久。仿真是一般采用小的 分频来替代,真正下载到电路上时,就需要采用 120000 分频了。 值的注意的是译码器的输入采用了寄存器锁存输出,这是为了消除毛刺。 多输入的组合逻辑电路中,默写输入信号在理想情况下应该同时发生变化,但 由于延迟路径不同造成这些输入信号发生变化的时

50、间有微小差别(门延迟时间 量级),这是得到的是输出信号就会有毛刺,这些毛刺有可能会给下一级电路 20 带来,使得整个系统运行不稳定。因此,为保证系统的稳健性,一般情况下, 都应该给输出信号去毛刺,使之变得干净。在设计中,译码的输入是计数器的 输出,计数器各级输出延迟是不一样的,因此译码器输出 clk_scan 信号波形就 会有毛刺(如图 3.8)。 3.2.1.1改改变变输输入入信信号号消消除除毛毛刺刺 为了消除毛刺带来的影响,可以设法使得组合逻辑电路的输入每一时刻只 有一个发生变化。对于本电路可以把计数器从二进制码计数器改为格雷码计数 器。格雷码计数器的特点是相邻的计数值只有一位不相同,即每

51、次计数值改变 时,只有一位信号会发生变化。这一点就可以保证没有毛刺产生。 3.2.1.2 通通过过d触触发发器器消消除除毛毛刺刺 把有毛刺的信号通过时钟采样,即通过一个 d 触发器也可以消除毛刺。本 设计就是使用这种方法。这种方法的缺点是信号通过一个 d 触发器后,就延迟 了一个时钟周期。对于本设计这种延迟是允许的,然而在有些电路中延迟是不 允许的。该电路的仿真结果如图 3.9 所示。 3.2.2 关键部分关键部分 vhdl 程序程序 library ieee; 图图 3.8 没有消除毛刺的仿真结果没有消除毛刺的仿真结果 图图 3.9 消除毛刺后的仿真结果消除毛刺后的仿真结果 21 use i

52、eee.std_logic_1164.all; entity fen2 is port(clk: in std_logic; clkk: out std_logic); end fen2; architecture prosess of fen2 is begin process(clk) -计数模块 begin if(rising_edge(clk)then if(cntx=480)then cntx=0; else cntx=cnthigh/2)then clk_scan=1; else clk_scan=0; end if; end if; end process; 图 4.0 为分频电

53、路生成的元件符号。 22 3.3 多路选择模块多路选择模块 本文设计的多路选择器为二选一多路选择器,它是用来选择两路不同频率 信号中的一路,从而使扫描控制模块用不同的频率来扫描显示汉字与数字,用 适当的频率扫描显示,使人的眼睛能够看到一幅稳定的图像,达到最佳的视觉 效果。 多路选择器源程序及仿真: library ieee; use ieee.std_logic_1164.all; entity mux21 is port (a,b,s: in std_logic; y: out std_logic); end mux21; architecture ar of mux21 is 图图 4.0 分频电路的元件符号分频电路的元件符号 23 begin process (a,b,s) begin if s=0 then y=a; else y=b; end if; end process; end ar; 图 4.2 多路选择器程序的仿真 24 结结 论论 本设计是基于 vhdl 语言的点阵列 led 显示控制器的设计。本系统采用单 个 1616led 点阵逐行下移显示汉字或数字,需显示汉字或数字的 1616 点阵 字模已经存放在字模存储器中。显示控制器由现场可编辑逻辑门阵列(fpga) epf10k10 来

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论