淮北师范大学
硬件课程设计
跑马灯电路课程设计
学 院 计算机科学与技术
专 业 计算机科学与技术(非师范)
学生姓名 徐龙龙
学 号 [1**********]
指导教师 宋文
2010年12月15日 星期三
摘要:
21世纪人类将全面进入信息化社会,对微电子信息技术和微电子VLSI基础技术将不断提出更高的发展要求,微电子技术仍将继续是21世纪若干年代中最为重要的和最有活力的高科技领域之一。而集成电路(IC)技术在微电子领域占有重要的地位。伴随着IC技术的发展,电子设计自动化(Electronic Design
Automation EDA)己经逐渐成为重要设计手段,其广泛应用于模拟与数字电路系统等许多领域。
VHDL是广泛使用的设计输人硬件语言,可用于数字电路与系统的描述、模拟和自动设计。CPLD/FPGA(复杂可编程逻辑器件/现场可编程门阵列)为数字系统的设计带灵活性,兼有串!并行工作方式和高集成度!高速!高可靠性等明显的特点,CPLD/FPGA的时钟延迟可达纳秒级,结合其并行工作方式,在超高速领域和实时测控方面有非常广泛的应用。
关键字:
ATMEL的AT89C51、Quartus、VHDL语言、EDAD等等
目录
引言..........................................................4
1.总体方案设计................................................5
1.1EDA简介.................................................5
1.2使用EDA设计方法过程....................................5
1.3常用EDA工具Quartus简介................................5
2.VHDL语言应用................................................7
2.1设计要求定义............................................7
2.2用VHDL语言进行设计描述.................................7
2.3用VHDL仿真器对VHDL原代码进行功能仿真..................7
2.4对VHDL原代码进行综合优化处理...........................8
2.5配置....................................................8
3.跑马灯设计基本原理..........................................9
4.跑马灯原理图................................................10
5.详细设计....................................................11
6.课程设计体会................................................15
参考文献......................................................15
致谢..........................................................15
引言:
在电子设计技术领域,可编程逻辑器件(如PLD, GAL)的应用,已有了很好的普及。这些器件为数字系统的设计带来极大的灵活性。由于这类器件可以通过软件编程而对其硬件的结构和工作方式进行重构,使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程、乃至设计观念。
电子设计自动化(EDA)是一种实现电子系统或电子产品自动化设计的技术,它与电子技术、微电子技术的发展密切相关,吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,是20世纪90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA技术就是以计算机为工具,在EDA软件平台上,根据硬件描述语言HDL完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局线、仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。设计者的工作仅限于利用软件的方式来完成对系统硬件功能的描述,在EDA工具的帮助下和应用相应的FPGA/CPLD器件,就可以得到最后的设计结果。尽管目标系统是硬件,但整个设计和修改过程如同完成软件设计一样方便和高效。本次课题设计要求使用的是Altera公司的综合性PLD开发软件——Quartus II,通过VHDL语言仿真跑马灯的运行并且输出电路图,完成从设计输入到硬件配置的完整PLD的设计流程。
1、 总体方案设计
1.1EDA简介
EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。
1.2使用EDA设计方法过程
1.2.1 分为前端设计(系统建模RTL 级描述)和后端设计(FPGAASIC)
统建模
1.2.2 仿真:包括功能仿真和时序仿真,主要验证系统功能的正确性
及时序特性。
1.2.3 IP复用
1.2.4 前端设计
1.2.5 系统描述:建立系统的数学模型。
1.2.6 功能描述:描述系统的行为或各子模块之间的数据流图。
1.2.7 逻辑设计:将系统功能结构化,通常以文本、原理图、逻辑图、
布尔表达式来表示设计结果。
1.3常用EDA工具Quartus简介
使用基于EDA技术的Quartus开发可以从根本上解决MCU所遇到的问题。与汇编相比,FPGA/CPLD的优势是多方面的和根本性的:
编程方式简便、先进:诸如Quartus的FPGA/CPLD产品作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
高速:FPGA/CPLD的时钟延迟可达纳秒级,结合其并行工作方式,在超高 速应用领域和实时测控方面有非常广阔的应用前景。
高可靠性:在高可靠应用领域,MCU的缺憾为FPGA/CPLD的应用留下了很大的用武之地。除了不存在MCU所特有的复位不可靠与PC可能跑飞等固有缺陷外,FPGA/CPLD的高可靠性还表现在几乎可将整个系统下载于同一芯片中,从而大大缩小了体积,易于管理和屏蔽。
开发工具和设计语言标准化,开发周期短:由于FPGA/CPLD的集成规模非常大,集成度可达数百万门。因此,FPGA/ CPLD的设计开发必须利用功能强大的EDA工具,通过符合国际标准的硬件描述语言(如VHDL或Verilog-HDL)来进行电子系统设计和产品开发。由于开发工具的通用性、设计语言的标准化以及设计过程几乎与所用的FPGA/ CPLD器件的硬件结构没有关系。
所以设计成功的各类逻辑功能块软件有很好的兼容性和可移植性,它几乎可用于任何型号的FPGA/ CPLD中,由此还可以知识产权的方式得到确认,并被注册成为所谓的IP芯片,从而使得片上系统的产品设计效率大幅度提高。由于相应的EDA软件功能完善而强大,仿真方式便捷而实时,开发过程形象而直观。 功能强大,应用广阔。目前,FPGA/ CPLD可供选择范围很大,可根据不同的 应用选用不同容量的芯片。利用它们可实现几乎任何形式的数字电路或数字系 统的设计。随着这类器件的广泛应用和成本的大幅度下降。
2. VHDL语言应用
2.1设计要求定义
在从事设计进行编写VHDL代码之前,必须先对你的设计目的和要求有一个明确的认识。确定要实现的功能、对所需的信号建立时间、时钟/输出时间、 最大系统工作频率、关键的路径等这些要求,要有一个明确的定义,然后对比设计,再选择适当的设计方式和相应的器件结构,进行设计的综合。
2.2用VHDL语言进行设计描述
1. 应决定设计方式,设计方式一般说来有三种:自顶向下设计,自底向上设 阶层的生成,而后一种方式将描述的电路当作单模块电路来进行的。自顶向下的处理方式要求将你的设计划分成不同的功能元件,每个元件具有专门定义的输入和输出,并执行专门的逻辑功能。首先生成一个由各功能元件相互连接形成的顶层模块来做成一个网表,然后再设计其中的各个元件。而自底向上的处理方法正好相反。平坦式设计则是指所有功能元件均在同一层和同一图中详细进行的。
2 编写设计代码。编写VHDL语言的代码与编写其它计算机程序语言的代码有很大的不同,你必须清醒地认识到你正在设计硬件,编写的VHDL代码必须能够综合到采用可编程逻辑器件来实现的数字逻辑之中。懂得EDA工具中仿真软件和综合软件的大致工作过程,将有助于编写出优秀的代码。
2.3用VHDL仿真器对VHDL原代码进行功能仿真
对于大型设计,采用VHDL仿真软件对其进行仿真可以节省时间,可以在设计的早期阶段检测到设计中的错误,从而进行修正,以便尽可能地减少对设计
日程计划的影响。因为对于大型设计,其综合优化、配置往往要花费好几个小时,在综合之前对原代码仿真,就可以大大减少设计重复和修正错误的次数和时间。但对于小型设计,则往往不需要先对VHDL原代码进行仿真。
2.4对VHDL原代码进行综合优化处理
选择目标器件、输入约束条件后,VHDL综合优化软件工具将对VHDL原代码进行处理,产生一个优化了的网络表,并可以进行粗略的时序仿真。综合优化软件工具大致的处理过程如下:首先检测语法和语意错误;然后进行综合处理,对CPLD器件而言,将得到一组工艺专用逻辑方程,对FPGA器件而言,将得到一个工艺专用网表;最后进行优化处理,对CPLD的优化通常包括将逻辑化简为乘积项的最小和式,降低任何给定的 达式所需的逻辑块输入数,这些方程进一步通过器件专用优化来实现资源配置。对FPGA的优化通常也需要用乘积项的和式来表达逻辑,方程系统可基于器件专用资源和驱动优化目标指引来实现因式分解,分解的因子可用来对实现的有效性进行评估,其准则可用来决定是对方程序系统进行不同的因式分解还是保持现有的因子。准则通常是指分享共同因子的能力,即可以被暂存,以便于和任何新生成的因子相比较。
2.5配置
将综合优化处理后得到的优化了的网络表,安放到前面选定的CPLD或 FPGA目标器件之中。
3.跑马灯设计基本原理
一个简单的跑马灯的显示情况如图3-1所示,图中的每一个小方格代表一个发光二极管,黑色代表相应位置的发光二极管被点亮,白色的空格表示未被点亮。图3-1所示为从时刻1到时刻4这段时间LED点阵变化的情况,也就是每一个时间片,“+”向左移动一个位置,因此如果有11个 类似的时刻,看上去就是“+” 从右边移入左边移出,有从而产生跑马灯的效果。
图3-1
4.跑马灯原理图
5.详细设计
在编程时需要重点注意的是克服FPGA/CPLD设计方法的局限性。这主要体现在以下几点:
FPGA/CPLD设计软件一般需要对电路进行逻辑综合优化((Logic段Synthesis & Optimization),以得到易于实现的结果,因此,最终设计和原始设计之间在逻辑实现和时延方面具有一定的差异。从而使传统设计方法中经常采用的一些电路形式(特别是一些异步时序电路)在FPGA/CPLD设计方法中并不适用。这就要求设计人员更加了解FPGA/CPLD设计软件的特点,才能得到优化的设计。 FPGA一般采用查找表(LUT)结构(Xilinx), AND-OR结构(Altera)或多路选择器结构(Actel),这些结构的优点是可编程性,缺点是时延过大,造成原始设计中同步信号之间发生时序偏移。同时,如果电路较大,需要经过划分才能实现,由于引出端的延迟时间,更加大了延迟时间和时序偏移。时延问题是ASIC设计当中常见的问题。要精确地控制电路的时延是非常困难的,特别是在像FPGA/CPLD这样的可编程逻辑当中。
FPGA/CPLD的容量和I/O数目都是有限的,因此,一个较大的电路,需经逻辑划分((Logic Partition)才能用多个FPGA/CPLD芯片实现,划分算法的优劣直接影响设计的性能。
由于目标系统的PCB板的修改代价很高,用户一般希望能够在固定的引脚分配的前提下对电路进行修改。但在芯片利用率提高,或者芯片I/O引出端很多的情况下,微小的修改往往会降低芯片的流通率。
本例的具体操作步骤如下:
1. 运行Quartus,选择File,新建名为“seg_test”的Project,建立VHDL格式的文件,在编辑器中键入一下代码:
library ieee;
use ieee。std_logic_1164。all;
use ieee。std_logic_unsigned。all;
entity seg_test is
port(clk:in std_logic;--时钟信号
rst:in std_logic;--清零
sele:out std_logic_vector(3 downto 0);--数码管位选端
data:out std_logic_vector(7 downto 0);--数码管数据线
led:out std_logic_vector(7 downto 0));--LED数据线
end;
architecture one of seg_test is
signal clk_cnt:integer range 0 to 25000000;
11
signal clk_tmp:std_logic;
signal seg_cnt:integer range 0 to 15;
constant m:integer:=24999999;
begin
sele
--以下为任意分频部分
process(clk)
begin
if clk'event and clk='1' then
if clk_cnt=m then
clk_tmp
clk_cnt
else
clk_cnt
end if;
end if;
end process;
process(clk_tmp,rst)
begin
if rst='0' then seg_cnt
else
if clk_tmp'event and clk_tmp='1' then
seg_cnt
end if;
end if;
end process;
process(seg_cnt)
begin
case seg_cnt is
when 0=>data
when 1=>data
when 2=>data
when 3=>data
12
when 4=>data
when 5=>data
when 6=>data
when 7=>data
when 8=>data
when 9=>data
when 10=>data
when 11=>data
when 12=>data
when 13=>data
when 14=>data
when 15=>data
when others=>null;
end case;
end process;
end;
在Quartus中运行RTL Veiwer,可以测试逻辑电路的运行情况
13
以时钟震荡周期为例,设置时间为10ms,显示波形如下:
其他数值仿真结果截图:
14
6.课程设计体会
通过此次课程设计和程序的实现,以及运用网络和其他书籍查询不曾学到的知识,让我有了灵活使用知识的机会。同时在回顾以往学习汇编语言、单片机基础知识和C语言的基础上,进一步学习了VHDL。
之前对FPGA和CPLD的了解,更多的只是限定于单片机,现在觉得VHDL的确方便又神奇,言简意赅用三两句话就实现了“复杂”的硬件功能,而且硬件syntax和structure都很清晰,这样设计也不再是冷冰冰的,设计电路板子使用也不算过于复杂,在熟悉C语言的条件下,能够比较容易地理解程序的表达。 VHDL这么多年来不断完善和进化更能体现它在EDA中的地位,第一,它结构非常清晰,第二,类似的语言就只有verilog HDL,再加上都有丰富的接口,以及如Quartus的强大软件支持,这些都更能激发我学习VHDL的兴趣。
参考文献
[1] 胡振华,《VHDL与FPGA设计》,北京,中国铁道出版社,2000;
[2] 刘昌华,《数字逻辑EDA设计与实践-- QuartusⅡ》,北京,国防工业出
版社,2005;
[3] 王振红,《VHDL数字电路设计与应用实践教程》,北京,机械工业出版社,
2003;
[4] 何立民,《单片机高级教程—原理与应用》北京,北京航空航天大学出版
社,2000
致谢
感谢宋文老师的精心指导,通过两周的课程设计过程 ,让我学到了很多的东西。在接下来的日子里,我会更加在努力。
15
淮北师范大学
硬件课程设计
跑马灯电路课程设计
学 院 计算机科学与技术
专 业 计算机科学与技术(非师范)
学生姓名 徐龙龙
学 号 [1**********]
指导教师 宋文
2010年12月15日 星期三
摘要:
21世纪人类将全面进入信息化社会,对微电子信息技术和微电子VLSI基础技术将不断提出更高的发展要求,微电子技术仍将继续是21世纪若干年代中最为重要的和最有活力的高科技领域之一。而集成电路(IC)技术在微电子领域占有重要的地位。伴随着IC技术的发展,电子设计自动化(Electronic Design
Automation EDA)己经逐渐成为重要设计手段,其广泛应用于模拟与数字电路系统等许多领域。
VHDL是广泛使用的设计输人硬件语言,可用于数字电路与系统的描述、模拟和自动设计。CPLD/FPGA(复杂可编程逻辑器件/现场可编程门阵列)为数字系统的设计带灵活性,兼有串!并行工作方式和高集成度!高速!高可靠性等明显的特点,CPLD/FPGA的时钟延迟可达纳秒级,结合其并行工作方式,在超高速领域和实时测控方面有非常广泛的应用。
关键字:
ATMEL的AT89C51、Quartus、VHDL语言、EDAD等等
目录
引言..........................................................4
1.总体方案设计................................................5
1.1EDA简介.................................................5
1.2使用EDA设计方法过程....................................5
1.3常用EDA工具Quartus简介................................5
2.VHDL语言应用................................................7
2.1设计要求定义............................................7
2.2用VHDL语言进行设计描述.................................7
2.3用VHDL仿真器对VHDL原代码进行功能仿真..................7
2.4对VHDL原代码进行综合优化处理...........................8
2.5配置....................................................8
3.跑马灯设计基本原理..........................................9
4.跑马灯原理图................................................10
5.详细设计....................................................11
6.课程设计体会................................................15
参考文献......................................................15
致谢..........................................................15
引言:
在电子设计技术领域,可编程逻辑器件(如PLD, GAL)的应用,已有了很好的普及。这些器件为数字系统的设计带来极大的灵活性。由于这类器件可以通过软件编程而对其硬件的结构和工作方式进行重构,使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程、乃至设计观念。
电子设计自动化(EDA)是一种实现电子系统或电子产品自动化设计的技术,它与电子技术、微电子技术的发展密切相关,吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,是20世纪90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA技术就是以计算机为工具,在EDA软件平台上,根据硬件描述语言HDL完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局线、仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。设计者的工作仅限于利用软件的方式来完成对系统硬件功能的描述,在EDA工具的帮助下和应用相应的FPGA/CPLD器件,就可以得到最后的设计结果。尽管目标系统是硬件,但整个设计和修改过程如同完成软件设计一样方便和高效。本次课题设计要求使用的是Altera公司的综合性PLD开发软件——Quartus II,通过VHDL语言仿真跑马灯的运行并且输出电路图,完成从设计输入到硬件配置的完整PLD的设计流程。
1、 总体方案设计
1.1EDA简介
EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。
1.2使用EDA设计方法过程
1.2.1 分为前端设计(系统建模RTL 级描述)和后端设计(FPGAASIC)
统建模
1.2.2 仿真:包括功能仿真和时序仿真,主要验证系统功能的正确性
及时序特性。
1.2.3 IP复用
1.2.4 前端设计
1.2.5 系统描述:建立系统的数学模型。
1.2.6 功能描述:描述系统的行为或各子模块之间的数据流图。
1.2.7 逻辑设计:将系统功能结构化,通常以文本、原理图、逻辑图、
布尔表达式来表示设计结果。
1.3常用EDA工具Quartus简介
使用基于EDA技术的Quartus开发可以从根本上解决MCU所遇到的问题。与汇编相比,FPGA/CPLD的优势是多方面的和根本性的:
编程方式简便、先进:诸如Quartus的FPGA/CPLD产品作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
高速:FPGA/CPLD的时钟延迟可达纳秒级,结合其并行工作方式,在超高 速应用领域和实时测控方面有非常广阔的应用前景。
高可靠性:在高可靠应用领域,MCU的缺憾为FPGA/CPLD的应用留下了很大的用武之地。除了不存在MCU所特有的复位不可靠与PC可能跑飞等固有缺陷外,FPGA/CPLD的高可靠性还表现在几乎可将整个系统下载于同一芯片中,从而大大缩小了体积,易于管理和屏蔽。
开发工具和设计语言标准化,开发周期短:由于FPGA/CPLD的集成规模非常大,集成度可达数百万门。因此,FPGA/ CPLD的设计开发必须利用功能强大的EDA工具,通过符合国际标准的硬件描述语言(如VHDL或Verilog-HDL)来进行电子系统设计和产品开发。由于开发工具的通用性、设计语言的标准化以及设计过程几乎与所用的FPGA/ CPLD器件的硬件结构没有关系。
所以设计成功的各类逻辑功能块软件有很好的兼容性和可移植性,它几乎可用于任何型号的FPGA/ CPLD中,由此还可以知识产权的方式得到确认,并被注册成为所谓的IP芯片,从而使得片上系统的产品设计效率大幅度提高。由于相应的EDA软件功能完善而强大,仿真方式便捷而实时,开发过程形象而直观。 功能强大,应用广阔。目前,FPGA/ CPLD可供选择范围很大,可根据不同的 应用选用不同容量的芯片。利用它们可实现几乎任何形式的数字电路或数字系 统的设计。随着这类器件的广泛应用和成本的大幅度下降。
2. VHDL语言应用
2.1设计要求定义
在从事设计进行编写VHDL代码之前,必须先对你的设计目的和要求有一个明确的认识。确定要实现的功能、对所需的信号建立时间、时钟/输出时间、 最大系统工作频率、关键的路径等这些要求,要有一个明确的定义,然后对比设计,再选择适当的设计方式和相应的器件结构,进行设计的综合。
2.2用VHDL语言进行设计描述
1. 应决定设计方式,设计方式一般说来有三种:自顶向下设计,自底向上设 阶层的生成,而后一种方式将描述的电路当作单模块电路来进行的。自顶向下的处理方式要求将你的设计划分成不同的功能元件,每个元件具有专门定义的输入和输出,并执行专门的逻辑功能。首先生成一个由各功能元件相互连接形成的顶层模块来做成一个网表,然后再设计其中的各个元件。而自底向上的处理方法正好相反。平坦式设计则是指所有功能元件均在同一层和同一图中详细进行的。
2 编写设计代码。编写VHDL语言的代码与编写其它计算机程序语言的代码有很大的不同,你必须清醒地认识到你正在设计硬件,编写的VHDL代码必须能够综合到采用可编程逻辑器件来实现的数字逻辑之中。懂得EDA工具中仿真软件和综合软件的大致工作过程,将有助于编写出优秀的代码。
2.3用VHDL仿真器对VHDL原代码进行功能仿真
对于大型设计,采用VHDL仿真软件对其进行仿真可以节省时间,可以在设计的早期阶段检测到设计中的错误,从而进行修正,以便尽可能地减少对设计
日程计划的影响。因为对于大型设计,其综合优化、配置往往要花费好几个小时,在综合之前对原代码仿真,就可以大大减少设计重复和修正错误的次数和时间。但对于小型设计,则往往不需要先对VHDL原代码进行仿真。
2.4对VHDL原代码进行综合优化处理
选择目标器件、输入约束条件后,VHDL综合优化软件工具将对VHDL原代码进行处理,产生一个优化了的网络表,并可以进行粗略的时序仿真。综合优化软件工具大致的处理过程如下:首先检测语法和语意错误;然后进行综合处理,对CPLD器件而言,将得到一组工艺专用逻辑方程,对FPGA器件而言,将得到一个工艺专用网表;最后进行优化处理,对CPLD的优化通常包括将逻辑化简为乘积项的最小和式,降低任何给定的 达式所需的逻辑块输入数,这些方程进一步通过器件专用优化来实现资源配置。对FPGA的优化通常也需要用乘积项的和式来表达逻辑,方程系统可基于器件专用资源和驱动优化目标指引来实现因式分解,分解的因子可用来对实现的有效性进行评估,其准则可用来决定是对方程序系统进行不同的因式分解还是保持现有的因子。准则通常是指分享共同因子的能力,即可以被暂存,以便于和任何新生成的因子相比较。
2.5配置
将综合优化处理后得到的优化了的网络表,安放到前面选定的CPLD或 FPGA目标器件之中。
3.跑马灯设计基本原理
一个简单的跑马灯的显示情况如图3-1所示,图中的每一个小方格代表一个发光二极管,黑色代表相应位置的发光二极管被点亮,白色的空格表示未被点亮。图3-1所示为从时刻1到时刻4这段时间LED点阵变化的情况,也就是每一个时间片,“+”向左移动一个位置,因此如果有11个 类似的时刻,看上去就是“+” 从右边移入左边移出,有从而产生跑马灯的效果。
图3-1
4.跑马灯原理图
5.详细设计
在编程时需要重点注意的是克服FPGA/CPLD设计方法的局限性。这主要体现在以下几点:
FPGA/CPLD设计软件一般需要对电路进行逻辑综合优化((Logic段Synthesis & Optimization),以得到易于实现的结果,因此,最终设计和原始设计之间在逻辑实现和时延方面具有一定的差异。从而使传统设计方法中经常采用的一些电路形式(特别是一些异步时序电路)在FPGA/CPLD设计方法中并不适用。这就要求设计人员更加了解FPGA/CPLD设计软件的特点,才能得到优化的设计。 FPGA一般采用查找表(LUT)结构(Xilinx), AND-OR结构(Altera)或多路选择器结构(Actel),这些结构的优点是可编程性,缺点是时延过大,造成原始设计中同步信号之间发生时序偏移。同时,如果电路较大,需要经过划分才能实现,由于引出端的延迟时间,更加大了延迟时间和时序偏移。时延问题是ASIC设计当中常见的问题。要精确地控制电路的时延是非常困难的,特别是在像FPGA/CPLD这样的可编程逻辑当中。
FPGA/CPLD的容量和I/O数目都是有限的,因此,一个较大的电路,需经逻辑划分((Logic Partition)才能用多个FPGA/CPLD芯片实现,划分算法的优劣直接影响设计的性能。
由于目标系统的PCB板的修改代价很高,用户一般希望能够在固定的引脚分配的前提下对电路进行修改。但在芯片利用率提高,或者芯片I/O引出端很多的情况下,微小的修改往往会降低芯片的流通率。
本例的具体操作步骤如下:
1. 运行Quartus,选择File,新建名为“seg_test”的Project,建立VHDL格式的文件,在编辑器中键入一下代码:
library ieee;
use ieee。std_logic_1164。all;
use ieee。std_logic_unsigned。all;
entity seg_test is
port(clk:in std_logic;--时钟信号
rst:in std_logic;--清零
sele:out std_logic_vector(3 downto 0);--数码管位选端
data:out std_logic_vector(7 downto 0);--数码管数据线
led:out std_logic_vector(7 downto 0));--LED数据线
end;
architecture one of seg_test is
signal clk_cnt:integer range 0 to 25000000;
11
signal clk_tmp:std_logic;
signal seg_cnt:integer range 0 to 15;
constant m:integer:=24999999;
begin
sele
--以下为任意分频部分
process(clk)
begin
if clk'event and clk='1' then
if clk_cnt=m then
clk_tmp
clk_cnt
else
clk_cnt
end if;
end if;
end process;
process(clk_tmp,rst)
begin
if rst='0' then seg_cnt
else
if clk_tmp'event and clk_tmp='1' then
seg_cnt
end if;
end if;
end process;
process(seg_cnt)
begin
case seg_cnt is
when 0=>data
when 1=>data
when 2=>data
when 3=>data
12
when 4=>data
when 5=>data
when 6=>data
when 7=>data
when 8=>data
when 9=>data
when 10=>data
when 11=>data
when 12=>data
when 13=>data
when 14=>data
when 15=>data
when others=>null;
end case;
end process;
end;
在Quartus中运行RTL Veiwer,可以测试逻辑电路的运行情况
13
以时钟震荡周期为例,设置时间为10ms,显示波形如下:
其他数值仿真结果截图:
14
6.课程设计体会
通过此次课程设计和程序的实现,以及运用网络和其他书籍查询不曾学到的知识,让我有了灵活使用知识的机会。同时在回顾以往学习汇编语言、单片机基础知识和C语言的基础上,进一步学习了VHDL。
之前对FPGA和CPLD的了解,更多的只是限定于单片机,现在觉得VHDL的确方便又神奇,言简意赅用三两句话就实现了“复杂”的硬件功能,而且硬件syntax和structure都很清晰,这样设计也不再是冷冰冰的,设计电路板子使用也不算过于复杂,在熟悉C语言的条件下,能够比较容易地理解程序的表达。 VHDL这么多年来不断完善和进化更能体现它在EDA中的地位,第一,它结构非常清晰,第二,类似的语言就只有verilog HDL,再加上都有丰富的接口,以及如Quartus的强大软件支持,这些都更能激发我学习VHDL的兴趣。
参考文献
[1] 胡振华,《VHDL与FPGA设计》,北京,中国铁道出版社,2000;
[2] 刘昌华,《数字逻辑EDA设计与实践-- QuartusⅡ》,北京,国防工业出
版社,2005;
[3] 王振红,《VHDL数字电路设计与应用实践教程》,北京,机械工业出版社,
2003;
[4] 何立民,《单片机高级教程—原理与应用》北京,北京航空航天大学出版
社,2000
致谢
感谢宋文老师的精心指导,通过两周的课程设计过程 ,让我学到了很多的东西。在接下来的日子里,我会更加在努力。
15