FPGA课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计
开课学期: 2014年—2015年下学期
课程名称:FPGA课程设计
学院:信息科学与工程学院
专业:集成电路设计与集成系统
班级:集成1201班
学号:20121221077
姓名:蔚
任课教师:涛
2015 年 7 月 21 日
基于FPGA的数字钟设计
摘要
本文介绍一种利用现场可编程逻辑器件FPGA产生多功能数字钟的设计方案。

数字钟是采用数字电路实现对时、分、秒数字显示的计时装置,是人们日常生活中不可少的必需品。

本设计采用EDA技术,以硬件描述语言Verilog为系统逻辑描述手段设计文件,在Quartus II工具软件环境下,由各个基本模块共同构建了一个基于FPGA的数字钟。

系统由时钟模块、控制模块、计时模块、数据译码模块、显示以及报时模块组成。

经编译和仿真所设计的程序,在可编程逻辑器件上下载验证。

开发板采用5CSEMA5F31C6N。

本次设计的多功能数字钟,具有时、分、秒的数码管显示功能,以24小时循环计数,具有整点报时功能,并有由按键输入进行数字钟的校时、清零、启停功能。

关键词:可编程逻辑器件 FPGA Verilog 数字钟 EDA技术
Abstract
This paper introduces a kind of based on field programmable logic device FPGA design of multi-function digital clock, the digital clock is used in digital circuits, and seconds digital display timing device is in people's daily life necessities.
This design using EDA technology, hardware description language Verilog logic system description method of design documents, in the Quartus II software environment, by all the basic modules together to build a a FPGA based digital clock.
System consists of the clock module, control module, time module, data decoding module, display and broadcast module composition. Program after compilation and simulation design, programmable logic device to download verification. Development board using the multi-function digital clock 5CSEMA5F31C6N. this design, with time, points, the second digital tube display, to a 24-hour cycle count, with the whole point timekeeping function and input by the key of the school of digital clock, clear, open and stop function.
Key words: programmable logic device FPGA Verilog Digital cloc EDA Technology
目录
前言 (1)
第一章多功能数字钟概述 (2)
1.1 数字钟的构成 (2)
1.3 计时电路 (3)
1.4 异步清零电路 (4)
1.5 校时、校分功能电路 (4)
第二章 FPGA简介 (5)
2.1 现场可编程逻辑门阵列FPGA (5)
2.2 FPGA简介 (6)
2.3 Quartus II软件简介 (6)
第三章设计方案 (7)
第四章设计实现 (9)
4.1 顶层模块 (9)
4.2 新建工程项目 (9)
4.3 选择芯片 (10)
4.4 子模块 (12)
4.4.1 分频器 (12)
4.4.2 控制器和计数器 (13)
4.4.3 显示器 (16)
4.5 元件封装 (21)
4.6 引脚的绑定和设置 (21)
4.7 之后再进行一次编译运行。

(22)
5.1 下载 (22)
4.6 设计结果 (25)
第五章结束语 (26)
参考文献 (27)
前言
现代社会的标志之一就是信息产品的广泛使用,而且是产品的性能越来越强,复杂程度越来越高,更新步伐越来越快。

支撑信息电子产品高速发展的基础就是微电子制造工艺水平的提高和电子产品设计开发技术的发展。

前者以微细加工技术为代表,而后者的代表就是电子设计自动化(electronic design automatic,EDA)技术。

本设计采用的Verilog是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计;支持结构、数据流、行为三种描述形式的混合描述、覆盖面广、抽象能力强,因此在实际应用中越来越广泛。

ASIC是专用的系统集成电路,是一种带有逻辑处理的加速处理器。

而FPGA是特殊的ASIC 芯片,与其他的ASIC芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。

在控制系统中,键盘是常用的人机交换接口,当所设置的功能键或数字键按下的时候,系统应该完成该键所设置的功能。

因此,键信息输入是与软件结构密切相关的过程。

根据键盘的结构不同,采用不同的编码方法。

但无论有无编码以及采用什么样的编码,最后都要转换成为相应的键值,以实现按键功能程序的转移。

钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。

诸如定时自动报警、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。

因此,研究数字钟及扩大其应用,有着非常现实的意义。

第一章多功能数字钟概述
1.1 数字钟的构成
数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。

由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。

通常使用石英晶体振荡器电路构成数字钟。

图3-1所示为数字钟的一般构成框图。

主要包括时间基准电路、计数器电路、控制电路、译码和显示电路。

其中的控制逻辑电路是比较灵活多样的,不断完善它可以增强数字钟的功能。

图1.1-1数字钟的一般组成框图
1.2 多功能数字钟的基本原理
通过分析多功能数字钟的设计要求和所要实现的功能,应用层次化方法设计出数字钟应由计时模块、分频脉冲模块、译码显示模块、校时校分和清零模块、报时模块等几个模块组成,其原理框图如下图1.2-1所示:
图1.2-1 数字钟的原理图
1.3 计时电路
通过分析数字钟的功能,知道数字钟计时周期是24小时,因此必须设置模24的小时计数器,两个模为60的计数器实现分和秒的计数,三个计数器之间构成进为关系,即秒计数器为分计数器提供计数脉冲信号,分计数器为时计数器提供计数脉冲信号。

另外,如果想要数字钟还可以显示星期的话,还应添加一个模7的星期计数器,由时计数器提供计数脉冲信号。

从全局设计考虑计时器应具有使能端和异步清零端。

多功能数字钟应该具有的功能:显示时-分-秒。

整个电子钟的工作应该是在1Hz 信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的围是从0~23时。

复位后全部显示00-00-00。

在设计中为了显示的方便,分钟和秒钟(显示的围都是从00~59),小时(00~23)的十位和个位都应该采用十进制计数器。

图1.3-1总体结构
1.4 异步清零电路
为实现异步清零功能,可以将异步清零开关KK3分别和各个计数器的清零信号的取反相或非后再接给清零端。

这样,当KK3关闭(低电平)时,计数器正常计数;当开关KK3开启(高电平)时,计数器全部异步清零。

1.5 校时、校分功能电路
数字钟的校时和校分功能原理相同,通过开关KK1、KK2控制工作状态。

当KK1打到低电平、KK2打到低电平时,各计数器的ENT端接的都是正常计数信号,ENP端都是高电平,各个计数器均正常计数;当KK1打到高电平、KK2打到低电平时,分个计数器的ENP端接的是KK2的非(高电平),进位信号正常送入分十位计数器的ENT端,分计数器快速校分,而由于秒计数器和时计数器的个位的ENP端接的是KK1的非,所以秒计数器和时计数器被保持;当KK1打到低电平、KK2打到高电平时,正常进位信号被阻塞,分计数器可以不接受秒计数器的进位信号控制,校时信号便被送入CP端,时计数器可以进行快速校时。

以上3部分功能可放在同一模块中实现,电路图如1.5-1所示:
图1.5-1 报时电路
仿真结果如下图1.3所示:
图1.3 报时电路的仿真
第二章 FPGA简介
2.1 现场可编程逻辑门阵列FPGA
FPGA(现场可编程门阵列)与CPLD(复杂可编程逻辑器件)都是可编程逻辑器件,它们是在PAL、GAL等逻辑器件的基础之上发展起来的。

但FPGA/CPLD的规模较大,非常适合于对时序、组合等逻辑电路应用场合,它可以替代几十甚至上百块通用IC芯片。

高速和高可靠是FPGA最明显的特点,当今的该类可编程器件,其最高工作频率可达百兆级,其时钟延迟可达纳秒级,结合其并行工作方式,在超高速应用领域和实时测控方面有非常广阔的应用前景。

FPGA的设计是基于查找表来实现的。

查找表就是实现将输入信号的各种组合功能以一定的次序写入RAM中,然后在输入信号的作用下,输出特定的函数运算结果。

其结构图如图2.1-1所示。

图2.1-1 查表结构图
一个N输入查找表(LUT,Look Up Table)可以实现N个输入变量的任何逻辑功能,如N输入“与”、N输入“异或”等。

输入多于N个的函数、方程必须分开用几个查找表(LUT)实现(如图2.1-2所示)。

图2.1-2 FPGA查找表单元部结构
2.2 FPGA简介
FPGA是Filed Progranmmable Gate Array的缩写,即现场可编程逻辑阵列。

FPGA 是在CPLD的基础上发展起来的新型高性能可编程逻辑器件它一般采用SRAM工艺,也有一些专用器件采用Flash工艺或反熔丝(Anti_Fuse)工艺等。

FPGA的集成度很高,其器件密度从数万系统门到数千万系统门不等,可以完成极其复杂的时序与组合逻辑电路功能,适用于高速、高密度的高端数字逻辑电路设计领域。

FPGA的基本组成部分有可编程输入/输出单元,基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元、嵌专用硬核等。

FPGA的主要器件供应商有Xilinx、Altera、Lattice、Actel 和Atmel等。

2.3 Quartus II软件简介
Quartus II是Alera公司推出的一款功能强大,兼容性最好的EDA工具软件。

该软件界面友好、使用便捷、功能强大,是一个完全集成化的可编程逻辑设计环境,具有
开放性、与结构无关、多平台完全集成化丰富的设计库、模块化工具、支持多种硬件描述语言及有多种高级编程语言接口等特点。

Quartus II是Altera公司推出的CPLD/FPGA开发工具,Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:可利用原理图、结构框图、VerilogHDL、AHDL和Verilog完成电路描述,并将其保存为设计实体文件;芯片平面布局连线编辑;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTap II逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、Verilog网表文件和Verilog网表文件;能生成第三方EDA软件使用的Verilog网表文件和Verilog网表文件。

第三章设计方案
多功能数字钟应该具有的功能有:显示时—分—秒、整点报时、小时和分钟可调等基本功能。

整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的围为0~23时。

在实验中为了显示的方便,由于分钟和秒钟显示的围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD码)显示个位,对于小时因为他的围是从0~23,所以可以用一个2位的二进制码显示十位,用一个4位的二进制码(BCD码)显示个位。

实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的1Hz信号,必须对输入的系统时钟50Mhz进行分频。

对于整点报时功能,本实验设计的是当进行正点的倒计时5秒时,让LED来闪烁进行整点报时的提示。

调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时;S2调整分钟,每按下一次,分钟增加一分钟。

另外用S8按键作为系统时钟复位,复位后全部显示00—00—00。

管脚分配如下表:
第四章 设计实现
4.1 顶层模块
本程序采用结构化设计方法,将其分为彼此独立又有一定联系的三个模块,如图4.1-1所示:
Location P IN_R16Option Value VCC S1
INPUT Location P IN_P 14
Option Value VCC S2INPUT Location P IN_J3
Option Value VCC
CP
INPUT Location P IN_M4Location P IN_F3Location P IN_F4Option Value SEL[2..0]OUTPUT Location P IN_L14
Option Value LED
OUTPUT
Location P IN_N4Location P IN_G4Location P IN_H4Location P IN_L5Location P IN_L4Location P IN_K4Location P IN_K5
Option Value LEDAG[6..0]
OUTPUT
CP CPout
f enpin
inst1
CPout
S1S2RET
Hour[5..0]Minute[5..0]Second[5..0]
LED
kongzhiqi
inst2
VCC
RET
INPUT CPout Hour[5..0]
Minute[5..0]
Second[5..0]
SEL[2..0]LEDAG[6..0]
xianshi
inst
图4.1-1顶层结构框图
4.2 新建工程项目
在E 盘建立项目工程文件夹,如E:/fpga-keshe/lw-clock ,打开Quartus II 软件,执行【File 】→【New Project Wizard 】选项,按如图4.2-1所示设置。

图4.2-1 新建工程项目
4.3 选择芯片
该系统设计中,FPGA芯片用的是ALTERA公司的5CSEMA5F31C6,它由若干个逻辑单元和中央布线池加I/O端口构成,然后再选择Verilog HDL语言。

如图4.3-1所示。

图4.3-1 选择所需芯片和语言
最后单击Finish按钮,创建好了设计工程,选择【FILE】>【NEW】菜单,出现如图4.3-2所示的新建设计文件类型窗口。

图4.3-2 选择编程Verilog文本文件
在上图4.3-2中选择【Verilog HDL File】,单击【OK】建立一个新的文本设计文件,命名为clock.v。

4.4 子模块
4.4.1 分频器
分频器的作用是对50Mhz 的系统时钟信号进行分频,得到频率为1000hz 的信号,作为显示器的输入信号。

CP CPout
f enpin
inst1
VCC
CP
INPUT CPout
OUTPUT
module fenpin(CP,CPout,Cout,CP_En); input CP, output CPout; reg CPout; reg [31:0] Cout; reg CP_En;
always (posedge CP ) //将50MHz 分频为1kHz begin Cout <= (Cout == 32'd50000) ? 32'd0 : (Cout + 32'd1); CP_En <= (Cout == 32'd50000) ? 1'd1 : 1'd0;
CPout <= CP_En;
end Endmodule 保存文件。

功能仿真波形如图4.4.2-1所示(以五分频为例):
图4.4.1-1
4.4.2 控制器和计数器
控制器的作用是,调整小时和分钟的值,并能实现清零功能。

计数器的作用是实现分钟和秒钟满60进1,小时则由23跳到00。

当到达59分55秒的时候,LED灯会闪烁来进行报时。

因为控制器和计数器的驱动信号频率均为1Hz,故从分频器输出的信号进入控制器后,要进行二次分频,由1Khz变为1Hz。

源程序如下:
module kongzhiqi( CPout,S1,S2,RET,Hour,Minute,Second,LED );
input CPout,S1,S2,RET;
output [5:0] Hour;
output [5:0] Minute;
output [5:0] Second;
output LED;
reg [5:0] Hour;
reg [5:0] Minute;
reg [5:0] Second;
reg R1;
reg R2,R8,LED;
reg [10:0] Cout;
reg Clk_En;
always(posedge CPout)
begin
if(S1==0)
begin
R1=1;
end
if(S2==0)
begin
R2=1;
end
if(RET==0)
begin
R8=1;
end
Cout=(Cout==32'd1000)?32'd0:(Cout + 32'd1); Clk_En=(Cout==32'd1000)?1'd1:1'd0;
if(Clk_En)
begin
if(R1==1)
begin
if(Hour<24)
Hour=Hour+1;
if(Hour==24)
begin
Hour=0;
end
R1=0;
end
if(R2==1)
begin
if(Minute<60)
Minute=Minute+1;
if(Minute==60)
begin
Minute=0;
if(Hour<24)
Hour=Hour+1;
if(Hour==24)
begin
Hour=0;
end
end
end
if(Second<60)
Second=Second+1;
if(Second==60)
begin
Second=0;
if(Minute<60)
Minute=Minute+1;
if(Minute==60)
begin
Minute=0;
if(Hour<24)
Hour=Hour+1;
if(Hour==24)
begin
Hour=0;
end
end
end
if((Minute==59)&&(Second>55))//整点倒计时begin
if(LED==1)
LED=0;
else
LED=1;
end
else
LED=0;
if(R8==1)//清零
begin
Hour=0;
Minute=0;
Second=0;
end
end
end
Endmodule
保存文件。

功能仿真波形如图4.4.2-1所示:
图4.4.2-1
4.4.3 显示器
显示器的作用是将时—分—秒的值在数码管上依次显示出来。

从分频器输出的1Khz的信号作为数码管的扫描信号。

SEL表示三个数码管选择位,它的取值表示八个数码管,从左至右依次是111~000。

LEDGA表示七段数码管,它的取值决定特定位数上显示的数字。

源程序如下:
module clock(CPout,Hour,Minute,Second,SEL,LEDAG);
input CPout;
input Hour,Minute, Second;
output SEL,LEDAG;
reg [2:0] SEL;
reg [6:0] Led;
reg [3:0] shi1,ge1,shi2,ge2,shi3,ge3;
always (posedge CPout )
begin
shiwei1=Hour/10;
gewei1=Hour%10;
shiwei2=Minute/10;
gewei2=Minute%10;
shiwei3=Second/10;
gewei3=Second%10;
if(SEL==3'b110) //判断位选SEL的值,并将此位上的值输出到数码管case(shiwei1)
4'b0000: Led = 7'b0111_111;
4'b0001: Led = 7'b0000_110;
4'b0010: Led = 7'b1011_011;
4'b0011: Led = 7'b1001_111;
4'b0100: Led = 7'b1100_110;
4'b0101: Led = 7'b1101_101;
4'b0110: Led = 7'b1111_101;
4'b0111: Led = 7'b0000_111;
4'b1000: Led = 7'b1111_111;
4'b1001: Led = 7'b1101_111;
default: Led = 7'b0000_000;
endcase
if(SEL==3'b101)
case(gewei1)
4'b0000: Led = 7'b0111_111;
4'b0001: Led = 7'b0000_110;
4'b0010: Led = 7'b1011_011;
4'b0011: Led = 7'b1001_111;
4'b0100: Led = 7'b1100_110;
4'b0101: Led = 7'b1101_101;
4'b0110: Led = 7'b1111_101;
4'b0111: Led = 7'b0000_111;
4'b1000: Led = 7'b1111_111;
4'b1001: Led = 7'b1101_111;
default: Led = 7'b0000_000;
endcase
if(SEL==3'b100)
Led=7'b1000_000;
if(SEL==3'b011)
case(shiwei2)
4'b0000: Led = 7'b0111_111;
4'b0001: Led = 7'b0000_110;
4'b0010: Led = 7'b1011_011;
4'b0011: Led = 7'b1001_111;
4'b0100: Led = 7'b1100_110;
4'b0101: Led = 7'b1101_101;
4'b0110: Led = 7'b1111_101;
4'b0111: Led = 7'b0000_111;
4'b1000: Led = 7'b1111_111;
4'b1001: Led = 7'b1101_111;
default: Led = 7'b0000_000;
endcase
if(SEL==3'b010)
case(gewei2)
4'b0000: Led = 7'b0111_111;
4'b0001: Led = 7'b0000_110;
4'b0010: Led = 7'b1011_011;
4'b0011: Led = 7'b1001_111;
4'b0100: Led = 7'b1100_110;
4'b0101: Led = 7'b1101_101;
4'b0110: Led = 7'b1111_101;
4'b0111: Led = 7'b0000_111;
4'b1000: Led = 7'b1111_111;
4'b1001: Led = 7'b1101_111;
default: Led = 7'b0000_000;
endcase
if(SEL==3'b001)
Led=7'b1000_000;
if(SEL==3'b000)
case(shiwei3)
4'b0000: Led = 7'b0111_111;
4'b0001: Led = 7'b0000_110;
4'b0010: Led = 7'b1011_011;
4'b0011: Led = 7'b1001_111;
4'b0100: Led = 7'b1100_110;
4'b0101: Led = 7'b1101_101;
4'b0110: Led = 7'b1111_101;
4'b0111: Led = 7'b0000_111;
4'b1000: Led = 7'b1111_111;
4'b1001: Led = 7'b1101_111;
default: Led = 7'b0000_000;
endcase
if(SEL==3'b111)
case(gewei3)
4'b0000: Led = 7'b0111_111;
4'b0001: Led = 7'b0000_110;
4'b0010: Led = 7'b1011_011;
4'b0011: Led = 7'b1001_111;
4'b0100: Led = 7'b1100_110;
4'b0101: Led = 7'b1101_101;
4'b0110: Led = 7'b1111_101;
4'b0111: Led = 7'b0000_111;
4'b1000: Led = 7'b1111_111;
4'b1001: Led = 7'b1101_111;
default: Led = 7'b0000_000;
endcase
SEL = SEL + 3'd1;
end
assign
LEDAG=Led;
endmodule
进行编译如图4.4.3-1:
图4.4.3-1 输入程序代码并进行编译运行
在图4.4.3-2中的【File】菜单中点选【Save as】存盘并保证该文件添加到了工程中,文件名为默认的即可。

至此,clock显示扫描模块文件建立完成。

图4.4.3-2 保存设计文件
4.5 元件封装
选择菜单【Files】>【Create/Update】>【Create Symbol Files for Current File】,将元件进行封装。

图4.5-1进行元件封装
选择菜单【Tools】>【Netlist Viewers】>【RTL Viewer】可以查看封装后所形成的结构图。

通过以上步骤,便完成了数字时钟模块的设计工作,即系统底成模块完成。

4.6 引脚的绑定和设置
为了能对该计数器进行硬件测试,应将其输入输出信号锁定在芯片确定的引脚上,编译后下载还必须配置芯片进行编辑,完成FPGA的最终开发。

选择菜单【Assignments】>【Pin Planner】,进行引脚。

如图4.6-1所示:
图4.6-1 引脚分配
4.7 之后再进行一次编译运行。

5.1 下载
将编译生成的.sof文件下载到硬件里,具体过程为:选择图标,点击【Hardware Setup】,在出现的小框框里选择【DE-SoC[USB-1]】,如图5.1-1所示:
图5.1-1
然后再点击【Auto Detect】选择【5CSEMA5】,如图5.1-2
图5.1-2
右击【5CSEMA5F31】,选择【Edit】>【Change File】,如图5.1-3所示:
图5.1-3
在【Program/Configure】点击打勾,然后点击左侧的【Start】,如图5.1-4、5.1-5所示:
图5.1-4
图5.1-5 下载中
4.6 设计结果
通过上述的步骤之后,将系统文件写进开发板。

如图4.6-1所示:
图4.6-1 开发板
给系统上电,可以实现多功能数字时钟。

实验完成。

第五章结束语
通过本次EDA设计,掌握了较为复杂逻辑电路的设计方法,了解了用Veriog语言编程设计电路的一般方法。

同时锻炼了自己的分析理解能力和动手能力,并且加深了对数电相关知识的理解。

实验时需要十分细心,一不小心就容易出错,一旦出现错误,就要马上耐心地检查线路,分析出错原因,找到错误,并加以更正。

如果不是接线问题,那再去思考一下,是不是设计的原理图有问题。

虽然这不是一个容易的过程,但在这个过程中,锻炼了自己的各项能力,令我受益匪浅。

其实,实验的过程也是锻炼耐力的过程。

在添加闹钟功能时,我们曾遇到过困难。

本来我们的报时电路是对的,可加上闹钟功能后,非但闹钟到时刻不响,就连原本的整点报时也不响了,经过一番仔细的盘查,我们发现原来是我们错用了或门,用高电平和发声频率相或,所以才会没有声音。

另外,在给闹钟增加音乐功能时也花了不少力气,刚开始在网上找的相关资料都不能用,最后终于找到了一个可以播放音乐的资料,我们将找到的Verilog源程序输入到自己的工程,终于成功让闹钟播放音乐闹铃了,那一刻,我们相当开心,因为这是我们通过努力才得到的收获。

这次课程设计虽然只有短短的两周不到,但我的收获却很大。

通过这次实习,我掌握了EDA设计的基本流程(即设计输入—编译—调试—仿真—下载),领会了自顶而下结构化设计的优点,并具备了初步的EDA程序设计能力。

我感觉,这个程序最难的地方在于顶层模块的设计,因为顶层模块需要将各个子模块按照电路原理有机地结合起来,这需要扎实的理论功底,而这正是我所欠缺的。

相比而言,子模块的设计就容易多了,因为Verilog语言和C语言有很多相似之处,只要明白了实验原理,就不难完成,水平的高下只体现在程序的简洁与否。

Verilog源程序的编写很容易出现错误,这就需要耐心的调试。

因为很多情况下,一长串的错误往往是由一个不经意的小错误引起的。

当程序屡调屡错的时候,最好和其他同学沟通交流一下,他们不经意的一句话,就可能给我启发,使问题迎刃而解。

很高兴能认识到这课设具有非常强悍潜力的知识,虽然过程中很多都不知道改从何下手,但是通过自己查找资料,询问同学,终于把这课设给做了出来,在动手的能力大大提高之余,充分体会在创造过程中探索的艰难和成功时的喜悦,提高了自己的学习能力以及扩展了只记得知识围。

也许这个设计做的并不是太好,但在设计过程中所学到的东西才是这次毕业设计的最大收获和财富,为之受益终身。

这门技术的背后非常的广阔,需要更多的知识和创造力。

这次实习,给我感触最深的还是行为态度问题。

人的能力有大有小,但只要端正态度,不抛弃,不放弃,任何人都能取得令自己满意的成绩。

在此,我由衷的感谢在这次课程设计中给了我巨大帮助的老师和同学们!
下载可编辑
.专业.整理. 参考文献
[1] 君,常明,秦娟,基于硬件描述语言(VHDL)的数字时钟设计,天津理工大学学报,2007,第23卷第4期,40-41。

[2] 廖日坤,CPLD/FPGA嵌入式应用开发技术白金手册,中国电力,2003,212-218。

[3] 王开军,姜宇柏,面向CPLD/FPGA的VHDL设计,机械工业,2006,28-65。

[4] 保经,中国集成电路大全,国防工业,1985。

[5] 高吉祥,电子技术基础实验与课程设计,电子工业,2002。

[6] 吕思忠,数子电路实验与课程设计,工业大学,2001。

[7] 谢自美,电子线路设计、实验、测试,华中理工大学,2003。

[8] 志杰,集成电路应用识图方法,机械工业,2003,35-40。

[9] 庆双,电子元器件的选用与检测,机械工业,2003。

[10] 谭会生,昌凡,EDA技术及应用,电子科技大学,2002。

[11] 可,数字钟电路及应用[M],北京:电子工业,1996。

[12]康华先,电子技术基础(数字部分)第四版[M].北京:高等教育, 2000. 213-224。

[13] 集成电路手册分编委会编,中外集成电路简明速查手册,TTL、CMOS电路[M],北京:电子工业,1997。

[14] 康华光,电子技术基础,高等教育,2002
[15] 宋春荣,通用集成电路速查手册,科学技术,1995。

[16] 阎石,数字电子技术基础(第四版)[M],北京:高等教育,1998。

[17] Kawasaki Hiroaki,Sakurada Hiroshi,Narushima Shinichi, etal D ouble-faced vacuum fluorescent display [P].U S Patent:5463276,1995。

相关文档
最新文档