基于fpga的点阵列led控制器内容摘要:

SRAM组成。 这 3种可编程电路是:可编程逻辑模块( CLBConfigurable Logic Block) 、输入 /输出模块( IOBI/O Block)和互连资源( IR—Interconnect Resource)。 可编程逻辑模块 CLB是实现逻辑功能的 基本单元,它们通常规则的排列成一个阵列,散布于整个芯片;可编程输入 /输出模块( IOB)主要完成芯片上的逻辑与外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源包括各种长度的连接线段和一些可编程连接开关,它们将各个 CLB之间或 CLB、 IOB之间以及 IOB之间连接起来,构成特定功能的电路。 一般说来,一个比较大的完整的项目应该采用层次化的描述方法:分为几个较大的模块,定义好各功能模块之间的接口,然后各个模块再细分去具体实现,这就是 TOP DOWN(自顶向下)的设计方法。 目前这种高层次的设计方法已被广泛采用。 高层次设计只是定义系统的行为特征,可以不涉及实现工艺,因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针对某种工艺 5 优化的网络表,使工艺转化变得轻而易举。 硬件设计需要根据各种性能指标、成本、开发周期等因素,确定最佳的实现方案,画出系统框图,选择芯片,设计 PCB并最终形成样机。 CPLD/FPGA软件设计可分为两大块:编程语言和编程工具。 编程语言主要有 VHDL和 Verilog两种硬件描述语言;编程工具主要是两大厂家 Altera和 Xilinx的集成综合 EDA软件(如 MAX+plusII、 QuartusII、 Foundation、 ISE)以及第三方工具(如 FPGA Express、 Modelsim、 Synposys SVS等)。 具体的设计输入方式有以下几种:。 HDL既可以描述底层设计,也可以描述顶层的设计,但它不容易做到较高的工作速度和芯片利用率。 用这种方式描述的项目最后所能达到的性能与设计人员的水平、经验以及综合软件有很大的关系。 可以分为电路原理图描述,状态机描述和波形描述 3种形式。 有的软件 3种输入方法都支持,如 ActiveHDL。 MAX+plusII 图 形输入方式只支持电路原理图描述和波形描述两种。 电路原理图方式描述比较直观和高效,对综合软件的要求不高。 一般大都使用成熟的 IP核和中小规模集成电路所搭成的现成电路,整体放到一片可编程逻辑器件的内部去,所以硬件工作速度和芯片利用率很高,但是但项目很大的时候,该方法就显得有些繁琐;状态机描述主要用来设计基于状态机思想的时序电路。 在图形的方式下定义好各个工作状态,然后在各个状态上输入转换条件以及相应的输入输出,最后生成 HDL语言描述,送去综合软件综合到可编程逻辑器件的内部。 由于状态机到 HDL语言有一种标准的对应描述方式,所以这种输入方式最后所能达到的工作速度和芯片利用率主要取决于综合软件;波形描述方式是基于真值表的一种图形输入方式,直接描述输入与输出的波形关系。 这种输入方式最后所能达到的工作速度和芯片利用率也是主要取决于综合软件。 基于 FPGA 设计 的方案论证 方案一: 本 系统的 LED 点阵模块 , 共由 16 16=256 个 LED 发光二 极管组成。 如何在该点阵模块上显示汉字是本文设计的关键技术。 本 设计是采用一种 6 32 路动态分时扫描技术来实现的。 具体方法是 , 将 4 个 8 8 数组的显示模块组合成两个 16 行 16 列的扫描结构 并将其串联(如图 所示)。 其行输入端与FPGA 内的只读存储器 ROM 的 16 位数据输出端口相连; 32 个列控制端与两个416 译码器 A、 B 的输出相连 ; 而译码器 A、 B 的输入端和片选信号又与 FPGA内的列扫描控制模块的输出端口 scan4scan0 相连。 图 为方案的结构框图。 图 点阵显示控制器结构 框图 7 方案二: VHDL 程序设计的是硬件,他和编程语言的最大区别是它可以“并发执行”。 本设计可以将 LED 显示屏要的显示内容抽象成一个二维数组(数组中的‘ 1’对映点阵显示屏上面的亮点),用 VHDL 语言设计一个 进程将这个数组动态显示在 LED 显示屏上,再利用另一个进程对这个数组按一定频率进行数据更新,更新的方式可以有多种。 因为两个进程是同时进行的(并发执行),如果对数组中的汉字数据按滚动的方 式更新,则可实现汉字的滚动显示。 图 为该方案的原理图。 方案比较: 方案一很容易实现,而且占用 FPGA 的资源较少。 但是由于其实现方式的局限性,该方案只能实现汉字的滚动显示。 方案二中将 LED 点阵抽象成了一个二维数组。 可以设计一些比较复杂的算法来控制这个数组,使设计的系统不但可以滚动显示汉字,还可以扩展一些其它的显示效果。 但是方 案二中对数组的处理部分对 FPGA 芯片的资源消耗太 大, 所以最终选择方案一。 系统 结构设计 系统的结构 图 是系统的结构框图。 本系统选用的 FPGA 芯片是美国 Altera 公司的FLEX1OK 系列的 EPF10K10LC844。 该芯片具有 576 个逻辑单元、 84 个引脚,72 个逻辑阵列块、 3 个嵌人式阵列块,是一个高集成度的 FPGA 芯片。 系统由 FPGA 中的扫描控制模块、只读存储器 ROM 和 FPGA 外面的 LED 点阵显示模块、一个反相器和两个 416 译码器构成。 其中, DZ1, DZ2, DZ3 ,和 DZ4 是 4 个 8 8 的 LED 点阵显示模块,由这四个模块组合起来构成了本系统16 16的 LED点阵显示模块。 两个 416译码器 (74LS154)和一个反相器配合 FPGA中的行扫描控制模块共同完成了 16 16 点阵显示模块的 32 行的扫描控制。 FPGA二维数组 动态显示 图 更新数组数据 8 中的只读存储器 ROM 中保存了要显示的多幅图像的数据,并以 8 位的数据宽度输出到 LED 阵显示模块的列端,配合行扫描控制共同完成多幅图像的 显示。 FPGA 的顶层设计 将上述的扫描控制模块和只读存储器 ROM 在 MAXPLUSII 的图形编辑器中以图 的关系构成 顶层设计,并编译下载到 FPGA 中,再按照图 所示的系统结构关系构成整个系统,即完成了一个基于 FPGA 的 LED 点阵显示系统的全部设计。 图 FPGA顶层原理图 9 3 子模块的设计 近几年在数字系统设计领域出现了一种全新的设计技术 —— 数字系统设计自动化 (EDA, Electric Design Automation)技术。 该技术借助计算机在图形、数据及语言处理方面的强大功能,利用计算机来辅助完成数字系统的设计,较原来传统数字系统设计技术有了突破性的发展。 它在设计 人口方面能接受符合人们思维习惯的高级硬件描述语言 (如 VHDL)和原来人们已经习惯的逻辑图输人。 并通过EDA 工具软件将其转换成能被可编程逻辑器件接受的数据,将此数据下载到支持该技术的可编程逻辑器件 (如 FPGA)上,使其成为一个具有设计要求功能的大规模集成电路芯片。 该技术具有系统设计效率高、集成度好、保密性强、易于修改、易于实现等优点,因此而成为当今数字系统设计的主流技术。 本文利用此技术设计一个 LED 点阵显示系统。 系统利用 FPGA 内部的物理资源,将只读存储器 ROM 和主要功能模块设计在 FPGA 内部。 充分显示了 EDA技术设计的灵活性,同时也大大提高了系统的集成度和稳定性。 扫描控制模块 LED 点阵原理 以下为 8 8 点阵 LED 外观及引脚图及其等效电路,只要其对应的 X、 Y 轴顺向偏压,即可使 LED 发亮。 例如如果想使左上角 LED 点亮,则 Y0=1, X0=0即可。 应用时限流电阻可以放在 X 轴或 Y 轴。 图 8 8 点阵 LED 外观图 10 点阵 LED 扫描法介绍 点阵 LED 一般采用扫描式显示,实际运用分为三种方式: ( 1)点扫描 ( 2)行扫描 ( 3)列扫描 若使用第一种方式,其扫描频率必须大于 16 64=1024Hz,周期小于 1ms 即可。 若使用第二和第三种方式,则频率必须大于 16 8=128Hz,周期小于 即可符合视觉暂留要求。 此外一次驱动一列或一行( 8 颗 LED)时需外加驱动电路提高电流,否则 LED 亮度会不足。 汉字的存储 用动态分时扫描技术使 LED 点阵模块显示图像 , 需要进行两步工作。 第一步是获得数据并保存 , 即在存贮器中建立汉字数据库。 第二步是在扫描模块的控制下 , 配合行扫描的次序正确地输出这些数据。 获得图像数据的步骤是 , 先将要显示的每一幅图像画在一个如图 所示的被分成 16 16共 256 个小方格的矩形框中 , 再在有笔划下落处的小方格里填上“ 1” , 无笔划处填上“ 0” , 这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布 , 再将此分布关系以 32 16 的数据结构组成 64 个字节的数据 , 并保存在只读存贮器 ROM 中。 以这种方式将若干个汉字的数据贮存在存贮器内 , 就完成了图像数据库的建立工作。 图 8 8点阵 LED等效图 11 然后,依次对多汉字抽取像素信息,并按序排队存放起来,便可得到一个待显示数据序列。 将这个序列存到 ROM 中进一步通过寻址的方法来控制该数据序列的释放过程,就可实现在 LED 发光二极管点阵上滚 动显示多汉字信息的目的。 由图 可知,某一时刻能在显示数据序列中定位待显示数据的地址指针可用下式计算: addr=n+m (式 ) 汉字的显示 第二步工作的步骤是 : 先在扫描模块的控制下 , 由地址线确定每次由 ROM送出某一列的 16 个 LED 所要显示的汉字的控制字节数据 , 同时由扫描模块输出的 5 位扫描码经两个 416 译码器解码后决定相应的某一列可以被点亮,而另外31 列都不能被点亮。 该状态持续约 毫秒后 , 就接着进行下一行的扫描。 当完成了一 次 32 行的扫描后,也就完成了一帧画面的显示。 重复上述过程不断修改图 滚动显示多汉字信息的原理示意图 图 16 16LED 点阵模块 12 ROM 的地址区间的起始地址 , 转向下一幅画面的数据传送和显示。 如此进行 ,就可以在 LED 点阵模块上滚动显示 ROM 中存储的汉字。 扫描控制模块 VHDL 程序: LIBRARY IEEE。 USE。 USE。 USE。 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。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。