基于VHDL语言的汉字滚屏显示系统设计

更新时间:2023-10-04 13:47:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘 要

现代电子设计技术的核心是EDA(Electronic Design Automation,电子设计自动化)技术。它融合多学科于一体,打破了软硬件间的壁垒,使计算机的软件技术与硬件实现、设计效率和产品性能综合在一起,它代表了电子设计技术和应用的发展。因此,掌握EDA技术是通信电子类高校学生就业的一个基本条件。

80年代后期由美国国防部开发的VHDL语言,正好满足了广大用户所期盼的面向设计的多层次、多领域且得到一致认同。

MAX+PLUSII软件是Altera提供的FPGA/CPLD开发集成环境,它具有原理图输入、文本输入、波形输入等多种输入方式,设计者利用它所配备的编辑、编译、仿真、综合芯片编程等功能完成将描述程序变换为基本的逻辑单元写入到可编程器件PLD中。

本论文主要研究的是应用一种硬件描述语言VHDL,借助MAX+PLUSII软件开发工具,设计开发一个汉字滚屏显示系统,能够在试验箱上滚动(上、下、左、右)显示已被存于ROM中的汉字内容,用VHDL语言编程实现,编译通过后,将其下载到FPGA芯片中具体实现其功能。

关键词:电子设计自动化;VHDL硬件描述语言;MAX+PLUSII;现场可编

程逻辑器件;汉字滚动显示。

ABSTRACT

EDA(electronic design automation)technology is the core of the modern electronic design technology. It mixes together a lot of subjects, breaks the barrier between software and hardware, makes the technology of software and the complement of hardware and the efficiency of design and function of product synthesize one object. It represents the direction of development of electronic design technology and use. Thus, mastering EDA technology is a primary condition for students of communication electronic university to obtain employment.

The language of VHDL of the American Ministry of National Defense development, is a kind of software which face to the multilayers, many realm and get the consistent approbation.

MAX+PLUSII that supplied by Altera is a surrounding for CPLD/FPGA development and integration. It has graphic input and text input and waveform input and so on. Designers can write their diagram into the programming device with utilizing edit complier simulator synthesize chip editor, etc, function that provided by the software, make into ASIC chip.

This thesis main research to VHDL Hardware description language draw support MAX+PLUSII, design a system to character rolling. And it can lode into the FPGA chip to rolling to left, right, up and down.

Key words: EDA; MAX+PLUSII; FPGA; VHDL; The Ch.charaiter Rolling

Display

目录

第1章 绪论 .................................................. 1

1.1 引言 .................................................... 1 1.2 课题简介 ................................................ 2

1.2.1 课题介绍 ........................................... 2 1.2.2 课题意义 ........................................... 2 1.3本论文研究内容 ........................................... 3

第2章 相关知识介绍 ........................................ 4

2.1 EDA技术 ................................................ 4

2.1.1 EDA技术简介 ..................................... 4 2.1.2 EDA技术实现目标 ................................. 5 2.1.3 EDA技术的发展趋势 ............................... 7 2.2 硬件描述语言 VHDL ...................................... 9

2.2.1 VHDL语言程序设计的基本结构 ..................... 10 2.2.2 VHDL语言的数据类型及运算操作符 ................. 11 2.2.3 VHDL语言的主要描述语句 ......................... 12 2.2.4 VHDL语言构造体的描述方式 ....................... 13 2.2.5 VHDL语言设计基本逻辑电路 ....................... 14 2.3 MAX+PLUSⅡ概述 ...................................... 15

2.3.1 MAX+PLUSII的特点 .............................. 15 2.3.2 MAX+PLUSII的设计流程 .......................... 16 2.3.3 MAX+PLUSII的使用 .............................. 17 2.4 PLD 简介 .............................................. 21

2.4.1 PLD技术概述 .................................... 21

2.4.2 PLD的基本结构 .................................. 22 2.4.3 PLD教学实验箱简介 .............................. 23 2.5 本章小结 .............................................. 26

第3章 系统实现方法 ....................................... 27

3.1 系统的实现方法 ........................................ 27

3.1.1 数字系统的设计方法 ............................... 27 3.1.2 本系统的实现方法 ................................. 28 3.2 VHDL实现系统功能 .................................... 30

3.2.1 快、慢信号的控制显示 ............................. 30 3.2.2 汉字信息的取得及其存储器的实现 ................... 30 3.2.3 汉字上下左右滚动的控制实现 ....................... 31 3.3 本章小结 .............................................. 32

第4章 系统的仿真与调试 ................................... 33

4.1 系统的仿真 ............................................ 33 4.2 VHDL实现的系统编译 .................................. 33 4.3 仿真的下载演示 ........................................ 35 4.4 本章小结 .............................................. 35

结论 .......................................................... 36 参考文献 ..................................................... 37 致谢 .......................................................... 38 附录 VHDL实现的系统程序清单 ............................... 39

第1章 绪论

1.1 引言

进入20世纪后半段,集成电路技术的发展是电子系统的实现方式发生了很大的变化。六十年代之前,电子系统都有分立元件构成;六、七十年代电子系统主要采用通用的集成电路;八、九十年代电子系统逐步采用半定制的专用集成电路——可编程器件;进入21世纪,全定制和定制专用集成电路正成为新的发展热点。专用集成电路的设计与应用必须依靠专门的EDA工具

电子设计自动化(EDA)是一个广泛的概念,凡在电子设计过程中用到计算机辅助手段的相关步骤都可以作为EDA的组成部分。当前,EDA技术正受到高度的重视和广泛的应用,并在深度和广度上不断发展。电子系统的设计已经无法脱离EDA工具的支持,并且依赖性越来越强。所谓EDA,具体来说就是数字系统的设计可以直接面向用户,根据系统的行为和功能要求,可以自上而下的逐层完成相应的描述、综合、优化、仿真与验证,直到生成器件。设计人员借助开发软件的帮助,可以将设计过程中的许多细节问题抛开,而将注意力集中在产品的总体开发上,这样大大提高了工作效率,缩短了开发周期。

目前世界上一些大型的EDA软件公司已开发了一些著名的软件,如Protel99、ORCAD、EWB、MAX+PLUSII等,对于一名电子工程师至少应掌握一门开发软件。现在的EDA设计工具,无不例外的使用硬件描述语言作为设计手段,据统计大部分设计者使用VHDL语言设计数字系统,因此,掌握VHDL对电子设计这是十分必要的。

1

3. 混合ASIC

混合ASIC(不是指数模混合ASIC)主要是指既具有面向用户的FPGA可编程逻辑功能和逻辑资源,同时也含有可方便调用和配置的硬件单元模块,如CPU、RAM、ROM、硬件加法器、乘法器、锁相环等。Xilinx和Altera公司已经推出了这方面的器件,如Virtex-‖Pro系列和Stratix系列等。混合ASIC为SOC和SOPC(System on a Programmable Chip)的设计实现成为便捷的途径。

2.1.3 EDA技术的发展趋势

就过去30年的电子技术的发展历程,可大致将EDA技术的发展分为三个阶段。

20世纪80年代,集成电路设计进入了COMS(互补场效应管)时代。复杂可编程逻辑器件已进入商业应用,相应的辅助设计软件也已投入使用。而在80年代末,出现了FPGA,CAE和CAD技术的应用更为广泛,它们在PCB设计方面的原理图输入、自动布局布线及PCB分析,以及逻辑设计、逻辑仿真、布尔方程综合和化简等方面担任了重要的角色,特别是各种硬件描述语言的出现、应用和标准化方面的重大进步,为电子设计自动化必须解决的电路建模、标准文档及仿真测试奠定了基础。

进入20世纪90年代,随着硬件描述语言的标准化得到进一步的确立,计算机辅助工程、辅助分析和辅助设计在电子技术领域获得更加广泛的应用,与此同时电子技术在通信、计算机及家电产品中的市场需求和技术需求,极大的推动了全新的电子设计自动化技术的应用和发展。特别是集成电路设计工艺步入超深亚微米阶段,百万门以上的大规模可编程逻辑器件的陆续面世,以及基于计算机技术的面向用户的低成本大规模ASIC设计技术的应用,促进了EDA技术的形成。更为重要的是各EDA公司致力于推出兼容各种硬件实现方案和支持标准硬件描述语言的EDA工具软件的研究,都可有效地将

7

EDA技术推向成熟。

EDA技术在进入21世纪后,得到了更大的发展,突出表现在以下几个方面:

● 使电子设计成果以自主知识产权得以明确表达和确认成为可能。 ● 在仿真和设计两方面支持标准硬件描述语言的功能强大的EDA软件不断推出。

● 电子技术全方位纳入EDA领域,除了日益成熟的数字技术外,传统的电

路设计建模理 念发生了重大变化。

● EDA使得电子领域各学科的界限更加模糊,更加互为模糊,更加互为包

容:模拟与数学、软件与硬件、系统与器件、ASIC与FPGA、行为与结构等。

● 更大规模的FPGA和CPLD器件的不断推出。

● 基于EDA工具的ASIC设计标准单元已涵盖大规模电子系统及IP核模块

● 软硬件IP核在电子行业的产业领域、技术领域和设计应用领域得到进一

步确认(IP即Intellectual Propetrty,即知识产权的简称,往往指一个公司出售给另一个公司的硬件设计包)。 ● SOC高效低成本设计技术的成熟。

随着市场需求的增长,集成工艺水平的可行性以及计算机自动设计技术

的不断提高,促使系统集成芯片成为IC设计的发展方向,这一发展趋势在如下几方面:

● 超大规模集成电路的集成度和工艺水平不断提高,深亚微米工艺已经走

向成熟,在一个芯片上完成系统级的集成已成为可能。

● 市场对电子产品提出了更高的要求,从而对系统的集成度不断提出更高的要求,

● 高性能的EDA工具得到长足的发展,其自动化和智能化程度不断提高,

8

为嵌入式系统设计提供了功能强大的开发环境。 ● 计算机硬件平台性能大幅度提高。

现有的HDL语言无法完成对复杂系统级的抽象描述,因此,人们正尝试开发一种新的系统设计语言来完成这一工作。

此外,随着系统开发对EDA技术的目标器件各种性能要求的提高,ASIC和FPGA将更大程度的相互融合。现在,传统ASIC和FPGA之间的界限正变得模糊。系统级芯片不仅集成RAM和微处理器也集成FPGA。整个EDA和IC设计工业都朝这个方向发展,这并非是FPGA和ASIC制造竞争者的产物,而是对于用户来说,意味着有了更多的选择。

2.2 硬件描述语言 VHDL

所谓硬件描述语言,就是可以描述硬件电路的功能,信号联结关系及定时关系的语言。它能比电原理图更有效地表示硬件电路的特性。数字逻辑电路设计者可以利用这种语言老描述自己的设计思想,然后利用电子设计自动化工具进行仿真,在自动综合到门级电路,最后利用ASIC或FPGA实现其功能,目前,这种被称为高层次设计的方法已被广泛采用。

硬件描述语言的发展至今已有二十几年的历史,并已成功地应用到系统的仿真、验证和设计综合等方面。到本世纪80年代后期,已出现了上百种的硬件描述语言,它们对设计自动化起到了促进和推动作用。但是,它们大多各自针对特定设计领域,没有统一的标准,从而使一般用户难以使用。广大用户所盼望的是一种面向设计的多层次、多领域且得到一致认同的标准的硬件描述语言。80年代后期由美国国防部开发的VHDL语言(VHSIC Hardware Description Language)恰好满足了上述这样的要求,并在1987年12月由IEEE标准化。它的出现为电子设计自动化(EDA)的普及和推广奠定了坚实的基础。

自IEEE公布了VHDL的标准版本之后,各EDA公司相继推出了自己的

9

VHDL设计环境,或宣布自己的设计工具支持VHDL。与其他的HDL语言相比,VHDL语言具有许多优点,主要表现在以下几个个方面

首先,VHDL语言可以支持自上而下和基于库的设计方法,而且还支持同步电路、异步电路、FPGA以及其它所及电路的设计。其范围之广是其它HDL语言所不能比拟的。例如,SFL语言只能描述同步电路。

其次,VHDL语言具有多层次描述系统硬件功能的能力,可以从系统的数学模型直到门级电路。另外,高层次的行为描述可以与低层次的RTL描述和结构描述混合使用。VHDL语言能进行系统级的硬件描述,这是它的一个突出特点。其它HDL语言如Verilog等只能进行IC级、PCB级描述,而不能对系统级的硬件很好地进行描述,再如VHDL语言可以自定义数据类型,这样也给编程人员带来较大的自由和方便。

再次,在用VHDL语言设计系统硬件时,没有嵌入与工艺有关信息。当然这样的信息是可以用VHDL语言编写的。与大多数HDL语言不同,当门级或门级以上层次的描述通过方针检验以后,再用相应的工具将设计映射成不同的工艺(如MOS、CMOS等)。这样,在工艺更新时,就无需修改原设计程序,只要改变相应的硬度和工具就行了。

此外,VHDL语言标准、规范、易于共享和复用。由于VHDL语言已经作为一种IEEE的工业标准,这样设计成果便于服用和交流,反过来就能更进一步推动VHDL语言的推广和完善。另外,VHDL语言的语法比较严格,给阅读和使用都带来了极大的方便。

2.2.1 VHDL语言程序设计的基本结构

一个完整的VHDL语言程序通常包括实体(Entity)、构造体(Architecture)、配置(Configuration)、包集合(Package)和库(Library)5个部分,前4种是可分别编译的源设计单元。实体用于描述所设计的系统的外部接口信号;构造体用于描述系统内部的结构和行为;包集合存放格设计

10

模块都能共享的数据类型、常数和子程序;配置用于从库中选取所需单元来组成系统设计的不同版本;库存放已经编译的实体、构造体、包集合和配置。

所谓VHDL语言设计的基本单元(Design Entity),就是VHDL语言的一个基本设计实体。基本构成都有实体说明(Entity Declaration)和构造体(Architecture Body)两部分组成。

VHDL语言可以有以下3种形式的子结构描述语句: BLOCK语句结构 PROCESS语句结构 SUBPROGAMS结构

2.2.2 VHDL语言的数据类型及运算操作符

在VHDL语言中凡是可以赋予一个值得对象就称为客体(Object),客体只要包括以下3种:信号、变量、常数(Signal、Variable、Constant)。

常数是一个固定值,所谓常数说明是对某一常数名赋予一个固定值。 变量只能在进程语句,函数语句和过程语句结构中使用,它是局部量。 信号是电子电路内部硬件连接的抽象、信号通常在构造体、包集合和实体中说明。

标准的数据类型有10种: 1.整数:整数32位; 2.实数:浮点数; 3.位:逻辑“0”或“1”; 4.位失量:位失量;

5.布尔量:逻辑“假”或逻辑“真”; 6字符:ASCⅡ字符;

7时间:时间单位fs,ps,ns,us,ms,src,min,hr; 8错误等级:NOTE,WARNING,ERROR,FAILURE;

11

end if; end if; end process; process(clk1) begin

if(clk1'event and clk1='1')then if(counter10=\counter10<=\clk2<='1'; else

counter10<=counter10+'1'; clk2<='0'; end if; end if; end process; end fendouble_arc;

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity counterdouble is port(clk2:in std_logic;

m:out std_logic_vector(2 downto 0); n:out std_logic_vector(6 downto 0)); end counterdouble;

architecture counterdouble_arc of counterdouble is signal c1,c2:std_logic;

42

signal m1:std_logic_vector(2 downto 0); signal counter61:std_logic_vector(5 downto 0); signal n1:std_logic_vector(6 downto 0); begin process(clk2) begin

if(clk2' event and clk2='1')then if(m1=\m1<=\c1<='1'; else m1<=m1+'1'; c1<='0'; end if; end if; end process; process(c1) begin

if(c1' event and c1='1')then if(counter61=\counter61<=\c2<='1'; else

counter61<=counter61+'1'; c2<='0'; end if; end if;

43

end process; process(c2) begin

if(c2' event and c2='1')then if(n1=\n1<=\else n1<=n1+'1'; end if; end if; end process; m<=m1; n<=n1;

end counterdouble_arc;

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity add is

port(m:in std_logic_vector(2 downto 0); n:in std_logic_vector(6 downto 0); addr:out std_logic_vector(6 downto 0)); end add;

architecture add_arc of add is

signal temp :std_logic_vector(6 downto 0); begin

temp<='0'&'0'&'0'&'0'&m;

44

addr<=temp+n; end add_arc;

library ieee;

use ieee.std_logic_1164.all; entity decoder_3_to_8 is port(ctr:in std_logic;

m:in std_logic_vector(2 downto 0); switch:out std_logic_vector(7 downto 0)); end decoder_3_to_8;

architecture decoder_3_to_8_arc of decoder_3_to_8 is signal indata:std_logic_vector(2 downto 0); begin indata<=m; process(indata) begin if ctr='1'then case indata is

when\when\when\when\when\when\when\when\when others=>switch<=\

45

end case; else case indata is

when\when\when\when\when\when\when\when\when others=>switch<=\end case; end if; end process;

end decoder_3_to_8_arc; library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity change is port(ctrl:in std_logic;

switch,code:in std_logic_vector(7 downto 0); data,sw:out std_logic_vector(7 downto 0)); end change;

architecture change_arc of change is begin

process(ctrl,code,switch)

46

设计项目的模拟仿真:通过时序模拟一个项目的逻辑功能是否达到实际要求,模拟允许把项目在编辑到器件之前进行全面检查,已确定它在各种可能的条件下有正确的响应。

器件编程:用仿真确认的配置文件经编程电缆配置PLD,即用编程文件对编程器件编程。

器件的功能验证:将编程后的器件加入实际激励,进行测试,以检查是否完成预计的功能。

以上各部如果出现错误,可随时进行设计修改,重复上述过程直到正确为止。逻辑设计的输入有多种方式,设计者可以用自己喜欢的方式进行输入。

2.3.3 MAX+PLUSII的使用

MAX+PLUSII是一门必修的软件,在之前的学习中就已基本掌握了它的使用,这里简要介绍一下基本的操作,深入地介绍如何更加合理的利用这门软件。

1. MAX+PLUSII界面

MAX+PLUSII软件按使用对象可分为商业版、基本版和学生版,这三个版本的使用方法基本相同,其差别在于:

商业版——商业版软件为避免盗版,在并行口上虚假一个硬件“狗”,每次系统启动都要通过“狗”来核对用户的合法性。

基本版——时序分析、VHDL语言综合等功能不能使用,不需“狗”的支持,只要向Altera申请一个基本授权妈就可以工作。

学生版——加以更多的限制,只能使用两种芯片。

当我们将所需的版本安装完成后,以后再次启动MAX+PLUSII时,它的管理器窗口如图2.1。

17

图2.1 管理窗口

2. 生成一个新的文本文件

(1) 在File菜单中选择New,如图2.2

图2.2

(2) 选择Text Editor File然后按下OK按钮就会出现一个无标题的文本编辑器窗口,如图2.3。

18

图2.3

3.灵活使用工具栏

MAX+PLUSII的灵活运用直接关系到设计的数度和效率,另外,对于初学者,很容易因为操作的失误而造成文件的覆盖和丢失。下面介绍一下如何使用工具栏来提高设计的速度。打开软件后,操作界面窗口上方工具栏如图2.4。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

图2.4 工具栏

工具栏的各个快捷键相当于菜单中的各个选项,设计者将一些设计时常用的操作设计快捷键放在工具栏中供设计者使用,这样可以大大的提高设计时操作的时间。各个快捷键这里都进行了编号,下表就各个快捷键的意义依编号进行了介绍,如表2.1。

表2.1 快捷键定义表

编号 1 2 3 意 义 New Open Save 功 能 新建一个文件 打开一个文件 存储文件 19

4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Print Cut Copy Paste Undo Help Hierarchy display Floorplan editor Compiler Simulator Timing analyzer Programmer Project name Save as Set file to current project Save and check Save and compiler Save and simulator 打印文件 剪切 复制 粘贴 撤销 帮助 层次显示 管脚分配 编译 仿真 时序分析 下载 项目名称 另存为 打开项目下的文件 存储并检查 存储并编译 存储并仿真 其中快捷键4、9、10和14不常用到,其它都时常用的操作,各个操作在菜单下面都可以找到,但是比较费时费力,熟练掌握工具包的使用对快速高效设计非常有用。18按钮为切换到项目名下的文件。它和File——project——set project to current file菜单功能相反,二者在使用的过程中,可以快速进行项目的切换。当一个模块需要修改时,可以打开底层文件进行修改,修改完毕后打开撒谎那个层文件,按下file——project——set project to current file菜单就可以非常快捷的切换当前的操作文件。 4. 合理使用帮助功能

20

MAX+PLUSII提供了强大的帮助功能,它的帮助功能包括操作帮助,硬件描述语言AHDL、VHDL等的帮助,还有一些其它的帮助,其中对于一个设计者最有用的还是Help菜单下的Search for help on选项,它给设计者提供了检索功能。它最大的优点就是设计者可以不用查阅相关书籍就可以查到自己所需要的帮助。 5. 注意事项

对项目进行编译的时候,MAX+PLUSII编辑器将自动产生用于MAX器件的编辑目标文件(.pof),而对于FLEX器件编译器还可以自动产生一个SRAM目标文件(.sof)。因为,如果选择器是MAX系列的,在选择编程文件时应选择.sof文件。

对于JTAG链的设置,应按照硬件设备上的器件顺序:MAX70000系列中EPM7128SLC84-15位第一个器件,而FLEX10K系列中的EPF10K10LC84-4位第二个器件。

2.4 PLD 简介

2.4.1 PLD技术概述

可编程逻辑器件PLD是20世纪80年代发展起来的器件,PLD是一种由用户根据自己的需要来设计逻辑功能并对此器件进行编程后实现的。随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独自承担。系统设计师们更愿意自己设计专用集成电路芯片,而希望ASIC的设计周期尽量短,最好在实验室就设计出合适的芯片,并且立即投入实际应用,因而出现了现场编程逻辑器件(FPLD),其中应用最广泛的现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。

早期的可编程逻辑器件有可编程只读存储器(PROM)、紫外线可擦除只

21

读存储器(EPROM)和电可擦除只读存储器(EEPROM)三种。这一阶段的产品主要有PLA(可编程阵列逻辑)和GAL(通用阵列逻辑)。

20世纪80年代中期,Altera和Xilinx分别提出了类似于PAL结构的扩展型CPLD和与标准门阵列类似的FPGA,它们都具有体系结构,它们的逻辑单元都具有灵活、集成度高以及适用范围广等特点。这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。几乎所有的应用门阵列、PLD和中小规模通用集成电路的场合均可采用FPGA和CPLD器件。

以上是PLD的发展过程,这类器件的出现给我们带来了极大的方便,它具有以下优点:

1.提高了功能的集成度; 2.加快了电子系统的设计速度; 3.高的性能; 4.高可靠性; 5.低成本。

2.4.2 PLD的基本结构

结构都是由输入电路、与阵列、输出电路组成。

核心部分是具有一定规模的与阵列和门阵列,它们产生的与项和或项用以实现逻辑函数。输入电路及有缓冲作用,并产生互补输入信号,送至与阵列。输入电路既有缓冲作用,又可提供不同的输入方式(组合方式或时序方式)以满足不同的逻辑要求。

与阵列和或阵列是SPLD(Simple Programmable Logic Device)中最基本的结构,通过编程改变它们的内部连接,就可以实现不同的逻辑功能;而PLD的输出电路结构的不同则决定了输出是组合逻辑还是时序逻辑。依据可编程部位的不同可将SPLD的基本结构分为PROM、PLA、PAL和GAL四种基本

22

类型。

近年来推出的各类性能更为优越的HDPLD按结构在上面介绍的基本结构上有了较大的发展。HDPLD按结构分大致可分为两大类,一类是扩展型(如EPLD、CPLD),这类器件是在PAL和GAL结构的基础上加以扩展和改进而成的;另一类是逻辑单元型(如FPGA),这类结构是由许多基本逻辑单元组成,本质上是这些逻辑单元的矩阵,围绕该矩阵设置输入/输出(I/O)单元,在逻辑单元之间及逻辑单元I/O单元之间有可编程连线进行连接,以此来形成大规模逻辑系统。

2.4.3 PLD教学实验箱简介

PLD教学实验箱是本次毕业设计用到的主要硬件,它的掌握和灵活运用直接关系大设计电路的成功与否。

可编程逻辑器件实验箱是在一种能和美国Altera公司的MAX+PLUSII的可编程器件设计软件配套使用的高级硬件仿真工具。它既能支持初学者学习CPLD/FPGA大规模可编程器件的使用,也能支持电子工程师们使用电子设计自动化和大规模可编程器件进行电子系统的设计和开发工作。它在使用时要通过下载电缆与PC机的打印机并行口相接,并在美国Altera公司的MAX+PLUSII可编程器件CAD设计工具软件的支持下运行。

本实验箱是由Altera公司的可编程器件MAX7000S系列中的EPM7128SLC84-15和FLEK10系列的EPF10K10以及丰富的可选择外为借口器件组成。它可采用20MHz的石英晶体振荡器作为系统的主时钟源,支持采用JTAG链的下载方式的板内的可编程器件(EPM7128SLC84-15和EPF10K10LC84-4)进行系统编程和配置。

实验箱的硬件是由EPM7128SLC84-15和EPF10K10LC84-4两片可编程器件、一个稳压电源、一个多频率信号发生器、用于输入控制的16个拨码开关、两个按键开关、一个系统复位键、一个单步脉冲键、用于输出的6个数

23

码管、12个发光二极管、一个8*8LED点阵显示模块和一个喇叭。此外,还有用于研发的模数转换器、数模转换器、波形变换器等,下面就一些此次设计以及先前实验课所设计的主要部分作一介绍,对于没有接触过的部分就不作介绍了。

1. 工作电源与指示灯 2. 并行下载电缆与下载指示 3. 直流电源和连续脉冲源

(1) 可以从布线区插座POWER中引出用于扩展,其中POWER插座的1-2引脚为5伏,3-4引脚为地(插座排序为上起第一脚)

(2) 主钟源 本实验箱含有20MHz的石英晶振荡器,该振动器的输出作为系统的主钟源,直接驱动EPM7128SLC84-15的全局时钟脚GCLK1(第83脚)和EPF10K10的全局时钟脚GLOBL CLK(第43脚)

4. LED点阵显示模块

实验箱提供了一个8*8LED点阵显示模块。该模块由可编程器件EFP10K10控制,在设计上采用了共阴极扫描时驱动方案。它的行数据口D0-7与六位数字显示器公用数据线,而列数位开关B0-7与数模转换器的数据输出口D0-7共用数据线。

LED点阵显示模块阵列的行数据及列数位开关与EPF10K10的引脚互联关系如表2.2。

表2.2 管脚对应关系

LED点阵 显示模块 D0 D1 D2 EPF10K10 的引脚 72 73 78 LED点阵 显示模块 B0 B1 B2 EPF10K10 的引脚 62 64 65 24

D3 D4 D5 D6 D7 79 80 81 83 5 B3 B4 B5 B6 B7 66 67 69 70 71 由于LED点阵显示模块的列数位开B0-7与数模转换器的数据输出口D0-7复用EPF10K10的I/O引脚线,因此,当同时使用它们时,控制上应采用分时共享方案以避免LED点阵显示不正确的信息;由于LED点阵显示模块的行数据口D0-7与6位数据显示器共用数据线,如果两则同时显示,则会互相影响,因此,将要求其中一种显示时,应将另一种屏蔽.

6.可编程器件周边插座

实验箱在可编程器件EPM7128S和EPF10K10的周边安放了脚线外引插座,供高水平的科研工作者扩展系统功能使用。围绕在EPM7128S器件周围的插座分别是CPLD_P1、CPLD_P2、CPLD_P3和CPLD_P4;围绕在EPF10K10器件周边插座的分别是FLEX_P1、FLEX_P2、FLEX_P3和FLEX_P4。

7.拨码开关

实验箱具有两个带上拉电阻的8位拨码开关SW1和SW2,拨到上方为低电平,拨到下方为高电平。其中拨码开关SW1的输出与可编程器件EPM7128S的I/O引脚固连,而拨码开关SW2的输出与布线区插座P3相连(脚序为左起第1脚)。其中,拨码开关SW2和布线区插座P3的引脚互联关系如表2.3:

表2.3 引脚对应关系

拨码开关SW2码位 布线区插座P3的引脚 SW21 1 SW22 2 SW23 3 ┄ ┄ SW27 7 SW28 8

25

2.5 本章小结

本章就本次毕业设计所用到的相关知识和器材作了简要的介绍。其中硬件描述语言VHDL部分花费的时间较长,查阅了大量的资料,以保证编写程序的时候语法的正确性,并察看了相关的程序,部分知识是本人在实践中总结出来的,对个人来说有重要意义。

26

第3章 系统实现方法

3.1 系统的实现方法

本系统的实现采用了文本输入法即用VHDL实现,VHDL的优点是描述抽象,设计可以不用对内部的算法和信号的传输进行详细的设计。

3.1.1 数字系统的设计方法

(1) 采用自下至上(Bottom Up)的设计方法

在计算机辅助电子系统出现以前,人们一直采用传统的硬件电路设计方法来设计系统的硬件,即自下至上的设计方法。

自下至上的硬件电路设计方法的主要步骤是:根据系统对硬件要求,详细编制出技术规格书,并画出系统的控制流程图;然后根据技术规格书和系统的控制流程图,对系统的功能进行细化,合理的划分功能模块,并画出系统的功能框图;接着就是进行各功能模块的细化和电路设计;各功能模块电路设计、调试完成后,将各功能模块的硬件电路连接起来再进行系统的调试,最后完成整个系统的硬件设计。

在此方法中,仿真和调试通常只能在后期完成系统硬件设计以后才能进行。这样一来,系统设计时存在的问题只有在后期才能较容易被发现,这样,一旦考虑不周,那么就有可能从新设计系统,使得设计周期也大大增加。

在用传统的硬件设计方法进行设计并调试完毕后,所形成的硬件设计文件主要是由若干张电原理图构成的文件。如果系统较大,硬件比较复杂,那么这种电原理可能要有几千、几万张,如此多的原理图进行归档、阅读、修改和使用都带来了极大的不方便。

27

(2) 采用自上至下(Top Down)的设计方法

所谓自上至下的设计方法,就是从系统总体的要求出发,自上至下地逐步将设计内容细化,最后完成系统硬件的整体设计。在利用VHDL的硬件设计方法中,设计者将自上至下分成三个层次对系统硬件进行设计。

第一层次是行为描述。所谓行为描述,实质上就是对整个系统的数学模型的描述。其目的是通过对其的方针来发现设计中存在的问题,行为描述阶段并不真正考虑其实际的操作和算法用什么方法来实现,考虑更多的是系统的结构及其工作过程是否能达到系统设计规格书的要求。

第二层次是RTL方式扫描。即寄存器传输描述(数据流描述)。为了得到硬件的具体体现必须将抽象程度提高的行为描述方式的VHDL语言程序改写为RTL方式描述的VHDL语言程序,自阿咏反正工具进行方针,如果通过,则可进入下一步的工作。

第三层次是逻辑综合。即利用逻辑综合工具,将RTL方式描述的程序转换成用基本逻辑单元表示的文件(门级网络表)。此时,如果需要可以将结果以原理图方式输出。此后进行仿真并检验定时关系,如果一切正常,那么系统的硬件设计就基本上结束了。

有自上至下的设计过程可知,步步仿真检查有利于尽早发现设计中存在的问题,从而可以大大缩短系统硬件的设计周期。此外,这种方法免除了设计者在设计出奇编写逻辑表达式或真值表之苦,也就是降低了硬件电路设计难度。由于系统可大量采用ASIC芯片,设计者就可以根据硬件电路的设计需要,设计自用的ASIC芯片或可编程逻辑器件,这样最终使系统电路设计更趋合理,体积也大为缩小。

3.1.2 本系统的实现方法

设计方案应该有理论的支持,对于本系统,可以从系统的功能上进行划分,如图3.1。

28

慢时钟 时钟分频 分频器 循环计数 循环计数 n 加法器 显示 数据 LED 点阵 data 8*8 扫描译码 sw 快时钟 m 图3.1 能实现汉字滚动FPGA内核硬件流程图

用快、慢两个输入信号来控制汉字的点阵显示,而快慢两个信号可以通过所用系统钟源20MHz的分频产生,其中,慢信号由汉字信息的多少来决定,慢信号每加一,则点阵滚动一次,快信号即为扫描信号,因LED点阵8列,则快信号的取值范围为0-7,快信号用于控制LED点阵上显示完整汉字信息的稳定性,在一秒钟内显示大于24桢就没有亮度闪烁现象。由于分频器产生的慢信号m为3位二进制表示,而LED点阵的扫描输入信号为8位,这就需要一个3/8译码器来实现转换以满足系统需要。

为在8*8LED发光二极管点阵上显示汉字,要把汉字编码为8*8像素点,根据设计的汉字要求,在点阵上高电平“1”表示点阵发光,低电平“0”表示点阵不发光。按照扫描的向左、向右、向上、向下,对汉字每行货梅列进行编码时也按照向左、向右、向上、向下的顺序进行比编码。将编完码的汉字放到存储器中,然后通过定位地址指针将其选出,某一时可能在显示数据序列中定位待显示数据的地址指针可用下式计算:addr=n+m,此表达式可通过加法器来实现。

以上的设计就可以实现汉字的左右上下的滚动显示。

29

3.2 VHDL实现系统功能

3.2.1 快、慢信号的控制显示

时钟分频技术模块的功能是将频率为20MHz的内部时钟信号分解为控制快信号m的4KHz的时钟信号clk2(即在主钟源上升沿作用下进行5000分频),将其作为下一次分频的时钟,将m作为分频单位,即可实现对m的快控制,又可产生下一次分频的时钟信号(即对4kHz进行8分频,产生500Hz时钟),既而在进一步分解为控制慢信号的时钟信号c2(即对500Hz时钟进行61分频产生8Hz时钟信号),同理可实现对n的慢控制,在此次毕业设计中我使它在10秒钟内显示完滚动的汉字,根据所显示汉字的个数,控制慢信号的时钟定为8Hz,分频单位约为61。

3.2.2 汉字信息的取得及其存储器的实现

为了使汉字信息能在LED8*8点阵上显示出来,首先必须对汉字抽取像素信息,方法是先将待显示汉字表示成汉字点图形式,然后根据不同的滚动方向分别按列或行依次抽取像素信息,每列或行均具有8位字长,为了能清楚地实现汉字滚动显示,字与字之间,待显示字之前后均用了空字节补充,最后将所有像素序列存放于ROM中。

存放于ROM中的待显示数据序列是通过寻址的方式来控制该序列的释放过程,某一时可能在显示数据序列中定位待显示数据的地址指针可用下式计算addr=n+m,其原理示意图如图3.2。

30

0 1 2 … K K+1 K+2 K+3 K+4 K+5 K+6 K+7 … N-1 N 汉字信息定位指针n↑

0 1 2 3 4 5 6 7 LED点阵扫描定位指针n↑

图3.2 定位地址指针原理图

此次设计中n的取值范围应为0-N,N为待显示汉字及所有空字的总数,由它控制汉字显示的滚动速度;m的取值范围应为0-7,由它决定LED点阵的扫描速度。因此,控制n扫遍全部待显示数据的时间,可调节汉字信息的滚动速度;改变m的重复扫描周期,可改变在LED点阵上显示完整汉字信息的稳定性。

Addr的实现,实际上就是用VHDL语言来实现一个加法器,需要注意的是若对“STD_LOGIC_VECTOR”进行加、减运算时,两边的操作数和代入的变量位长如不相同时,则会产生语法错误,由于m为3位二进制数,而n为7位二进制数,则需将m与0,0,0,0用并置运算符“&”连接,构成与n位长相同的位矢量。

3.2.3 汉字上下左右滚动的控制实现

此次设计我所显示的汉字信息为“个十百千万亿兆”七个字,下面以“个”字为例说明如何根据汉字的上下左右不同方向滚动来抽取汉字像素信息。

显然,对于左右滚动应该按列抽取汉字像素信息,而上下滚动则应该按行一次抽取汉字像素信息,8*8LED点阵显示模块在设计上采用了共阴极、扫描式驱动方案,LED点阵的data线由FPGA的I/O线串300Ω限流电阻后驱动,为高电平有效,而sw线直接由FPGA的I/O线驱动,为低电平有效,因此,对应于扫描信号和数据信号,上下左右滚动将有不同的存储形式,下面将依次分析它们的不同。

因为sw线,data线均为8位字长,而m为3位字长,所以首先应将m

31

本文来源:https://www.bwwdw.com/article/bdad.html

Top