流水灯电路设计说明书2.docx
- 文档编号:23294037
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:25
- 大小:341.15KB
流水灯电路设计说明书2.docx
《流水灯电路设计说明书2.docx》由会员分享,可在线阅读,更多相关《流水灯电路设计说明书2.docx(25页珍藏版)》请在冰豆网上搜索。
流水灯电路设计说明书2
1、EDA技术发展及介绍2
1.1EDA技术的介绍2
1.2EDA技术的发展2
1.3EDA技术的发展趋势3
2、总体方案设计4
2.1设计内容4
2.2设计方案比较4
2.3方案论证5
3、单元模块设计7
3.1有源晶振电路7
3.2供电电路8
3.3PS配置电路9
3.5LED灯输出电路10
4、特殊器件的介绍11
4.1CPLD器件介绍11
4.2FPGA器件介绍11
4.3EP1K30TC144器件介绍12
5、软件实现13
6、系统仿真及调试17
6.1系统仿真17
6.2调试22
7、总结24
7.1设计小结24
7.2设计收获24
7.3设计改进25
7.4致谢25
8、参考文献26
1、EDA技术发展及介绍
1.1EDA技术的介绍
EDA是电子设计自动化(ElectronicDesignAutomation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。
EDA技术是以计算机为工具,根据硬件描述语言HDL(HardwareDescriptionlanguage)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。
硬件描述语言HDL是相对于一般的计算机软件语言,如:
C、PASCAL而言的。
HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。
设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。
目前,就FPGA/CPLD开发来说,比较常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。
1.2EDA技术的发展
可将EDA技术分为三个阶段。
(1)七十年代为CAD阶段,人们开始用计算机辅助进行IC版图编辑、PCB布局布线,取代了手工操作,产生了计算机辅助设计的概念。
(2)八十年代为CAE阶段,与CAD相比,除了纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,实现了工程设计,这就是计算机辅助工程的概念。
CAE的主要功能是:
原理图输入,逻辑仿真,电路分析,自动布局布线,PCB后分析。
(3)九十年代为ESDA阶段,尽管CAD/CAE技术取得了巨大的成功,但并没有把人从繁重的设计工作中彻底解放出来。
在整个设计过程中,自动化和智能化程度还不高,各种EDA软件界面千差万别,学习使用困难,并且互不兼容,直接影响到设计环节间的衔接。
基于以上不足,人们开始追求:
贯彻整个设计过程的自动化,这就是ESDA即电子系统设计自动化。
1.3EDA技术的发展趋势
目前的EDA产业正处在一场大变革的前夕,对更低成本、更低功耗的无止境追求和越来越短的产品上市压力正迫使IC供应商提供采用0.13μm或以下的千万门级的系统芯片,而这些系统芯片的高复杂性设计更加依赖于EDA供应商提供全新的设计工具和方法以实现模拟前后端、混合信号和数字电路的完全整合。
然而,这些新的需求为当代EDA工具和设计方法带来了不少新的挑战与机会。
例如,如何在工艺上防止模拟电路与数字电路之间的干扰;现有的大部份EDA工具最多只能处理百万门级设计规模,随着IC设计向千万门级以上规模发展,现有EDA工具和方法必须进行升级。
如何融合各EDA供应商的工具,以便向IC设计界提供更高效能和更方便的RTL-to-GDSII或Conc-ept-to-GDSII整合设计环境;为保证深亚微米(0.13μm或以下)和更低内核工作电压(1.8V或以下)时代的信号完整性和设计时序收敛,必须采用新的设计方法。
半导体工艺的每一次跃升都促使EDA工具改变自己,以适应工艺的发展;反过来EDA工具的进步又推动设计技术的发展。
可以说EDA工具是IC设计产业的背后推手。
系统芯片(SOC)正在迅速地进入主流产品的行列。
由此引发的“芯片就等于整机”的现象,将对整个电子产业形成重大的冲击。
种种迹象表明,整个电子产业正在酝酿着一场深刻的产业重组,这将为许多新兴的企业提供进入这一行业的最佳。
2、总体方案设计
2.1设计内容
设计一个可以循环移动的流水灯,灯总数为8盏,具体要求如下:
第一种方式是开始时LED流水灯从左到右依次点亮,然后从右到左依次熄灭。
第二种方式是开始时LED流水灯从中间向两边点依次点亮,第四时间段从两边向中间依次熄灭。
第三种方式是开始时LED流水灯由1,4亮,然后2,5亮……依次,以此类推。
2.2设计方案比较
方案一:
由单片机AT89S52来实现流水灯控制电路的设计,外围电源采用+5V电源供电,时钟由12MHZ的晶振产生,中央处理器由AT89S52单片机来完成,流水灯状态由八个LED发光二极管来模拟。
这种方案,结构简单容易掌握,各部分电路实现起来都非常容易,在传统的流水灯设计中也应用得较为广泛,技术成熟。
其原理框图如图2-1:
图2-1单片原理实现框图
方案二:
基于现场可编程逻辑门阵列FPGA,通过EDA技术,采用VerilogHDL硬件描述语言实现流水灯控制电路设计。
将8个彩灯共阴极接地,阴极分别为EP1C3的8个I/O输出变化的电平,来控制彩灯的点亮,流水灯分不同的时段,指示灯有不同的显示模式,开始时刻LED流水灯从左到右依次点亮,第二时间段LED流水灯从右到左依次熄灭,第三时间段LED流水灯从中间向两边依次点亮,第四时间段LED流水灯从两边向中间依次熄灭,第五时间段LED流水灯由1,4点亮,然后2,5点亮……以此类推,最后完成一次循环又回到开始时刻,进入第二轮循环,来实现LED流水灯的控制实验。
从LED流水灯的工作原理来看,无论是第一时间段还是其他时间段,LED流水灯点亮还是熄灭,都是一个频率来控制LED流水灯点亮和熄灭的快慢。
只不过这个频率可以在程序中控制,也可以在定义输入引脚时把频率选择不同的频率段。
其框图如图2-2:
图2-2流水灯电路控制框图
2.3方案论证
通过方案一二的比较,可以看出方案一的设计使用分立元件电路较为多,因此会增加电路调试难度,且电路的不稳定性也会随之增加,而采用FPGA芯片实现的电路,由于在整体性上较好,在信号的处理和整个系统的控制中,FPGA的方案能大大缩减电路的体积,提高电路的稳定性。
此外其先进的开发工具使整个系统的设计调试周期大大缩短,一般来讲,同样的逻辑,基于FPGA要比基于单片机要快很多,因为它们工作的原理是完全不同的。
单片机是基于指令工作的,同样的激励到达单片机后,单片机首先要判断,然后读取相应的指令,最后作出相应,这每一步都是需要在单片机的时钟驱动下一步步的进行。
而基于FPGA则是把相应的逻辑“暂时”固化为硬件电路了,它对激励作出的响应速度就是电信号从FPGA的一个管脚传播另一个管脚的传播速度,当然这指的是异步逻辑,同时电信号也要在芯片内进行一些栅电容的充放电动作,但这些动作都是非常非常快的。
2.4方案选择
结合现两种方案的比较,第二种方案比第一种方案更稳定,也更容易实现,尤其在现代SOC技术的引领下,人们对低故障、高实时、高可靠、高稳定的性能更加青睐,结合本设计的要求及综合以上比较的情况,我们选择了基于FPGA的流水灯控制电路方案。
3、单元模块设计
本设计由现场可编程门矩阵(FPGA)作为控制芯片,通过VreilogHDL硬件描述语言设计,运用自顶而下的设计思想,按功能逐层分割实现层次化的设计。
下面介绍主要模块的功能及作用。
3.1有源晶振电路
图3-1有源晶振电路
采用有源晶振作为时钟信号源,它是一个完整的振荡器,其内部除了石英晶体外还有阻容软件和晶体管,有源晶振信号质量好,比较稳定,而且连接方式比较简单。
主要是作为电源滤波,通常使用的为一个电容和电感组成的PI型滤波网络,输出端使用一个小阻值电阻过滤信号。
串电阻可减小反射波,避免反射波叠加引起过冲,减少谐波以及阻抗匹配,减小回波干扰及导致的信号过冲。
由于本设计所用的为20MHZ的晶振,而20MHz以下的晶体晶振基本上都是基频的器件,稳定度好,20MHz以上的大多是谐波的(如3次谐波、5次谐波等等),稳定度差,因此我们使选用频的器件,毕竟倍频用的PLL电路需要的周边配置主要是电容、电阻、电感,其稳定度和价格方面远远好于晶体晶振器件。
3.2供电电路
图3-2供电电路
本设计中使用到了三个电源,第一是+5V的电源,用于为上拉电阻提供电压;第二是+3.3V电源,用于为FPGA芯片提供工作电压;第三是+2.5V电源,用于为FPGA芯片内核工作提供电压。
在FPGA芯片管脚上,+2.5V电源必须接在内核电源输入端(VCCINT)上,而VCCIO是芯片输入输出引脚工作电源,根据输入输出的设备不同,可以接2.5V、3.3V或5.0V。
特别注意的是EPC1PC8的工作电压必须为3.3V,且该配置芯片属于FlashMemory闪存)器件,具有可擦写的功能。
3.3PS配置电路
图3-3配置电路
配置电路采用被动串行(PS)模式,为了利用ByteBlasterMV下载电缆配置EP1K30TC144器件,3.3V的电源应该接上拉电阻,电缆的VCC脚连到3.3V电源,而器件的VCCINT的引脚连接到相应的2.5V,对于PS配置电路,器件的VCCIO引脚必须连接到2.5V。
上拉电阻接到配置器件的电源端,这里接到了+5V电源端。
nCS接到nCONFIG端,OE接到nSTATUS端,DCLK与DCLK相连接,DATA与DATA0相连接。
nCEO引脚端悬空。
3.5LED灯输出电路
图3-4LED灯输出电路
6个LED灯模拟流水灯的不同状态。
4、特殊器件的介绍
4.1CPLD器件介绍
CPLD是ComplexProgrammableLogicDevice的缩写,它是有最早的PLD器件发展形成的高密度可编程逻辑器件,它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点。
CPLD是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。
其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。
许多公司都开发出了CPLD可编程逻辑器件。
比较典型的就是Altera、Lattice、Xilinx世界三大权威公司的产品。
如Altera公司的MAXII器件,就是其极具代表性的一类CPLD器件,是有史以来功耗最低、成本最低的CPLD。
MAXIICPLD基于突破性的体系结构,在所有CPLD系列中,其单位I/O引脚的功耗和成本都是最低的。
Altera公司的MAX7000A系列器件是高密度、高性能的EPLD,它是基于第二代MAX结构,采用CMOSEPROM工艺制造的。
该系列的器件具有一定得典型性,其他结构都与此结构非常的类似。
它包括逻辑阵列块、宏单元、扩展乘积项、可编程连线阵列和IO控制部分。
由于大多数CPLD是基于乘积项的“与或”结构,故适合设计组合逻辑电路。
4.2FPGA器件介绍
FPGA(Field-ProgrammableGateArray)可以达到比PLD更高的集成度,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展起来的,具有更复杂的布线结构和逻辑实现。
PLD器件和FPGA的主要区别在于PLD是通过修改具有固定内连电路得逻辑功能来进行编程,而FPGA是通过修改一根或多根分割宏单元的基本功能块的内连线的布线来进行编程。
它一般由可嵌入式阵列块(EAB)、逻辑阵列块(LAB)、快速互联通道(FastTrack)、IO单元(IOE)组成。
AlteraCycloneII采用全铜层、低K值、1.2伏SRAM工艺设计,裸片尺寸被尽可能最小的优化。
采用300毫米晶圆,以TSMC成功的90nm工艺技术为基础,CycloneII器件提供了4,608到68,416个逻辑单元(LE),并具有一整套最佳的功能,包括嵌入式18比特x18比特乘法器、专用外部存储器接口电路、4kbit嵌入式存储器块、锁相环(PLL)和高速差分I/O能力。
CycloneII器件扩展了FPGA在成本敏感性、大批量应用领域的影响力,延续了第一代Cyclone器件系列的成功。
由于FPGA是基于查找表(LUT)结构的器件,且每个LAB由10个LE组成,一个LE由LUT和寄存器组成,适合于时序逻辑电路的设计。
4.3EP1K30TC144器件介绍
ACEX1K器件是Altera公司在2000推出的2.5V低价格SRAM工艺FPGA结构与10KE类似,带嵌入式存储块(EAB),部分型号带PLL,主要有1K10、1K30、1K50、1K100等型号。
EP1K30TC144器件中,EP1K表示器件类型,30表示器件内有30K个逻辑门,T代表封装类型,C表示用途为商用,144表示管脚数为144。
其引脚图如图所示
EP1K30TC
5、软件实现
设计步骤
⑴打开QuartusⅡ软件,建立一个新的工程light;
①单击菜单File→NewProjectWizard…
②输入工程路径,工程名以及顶层实体名。
③单击Next>按键,进入下一个界面。
由于我们建立的是一个空的项目,所以没有包含已有文件,单击Next>继续。
④设置我们的器件信息:
设置为Cyclone,在Availabledevices中选择EP1C3T144C8,然后单击Next>后结束工程建立。
⑵建立VHDL文件
1单击File→New菜单项,选择弹出串口的VHDLFile选项,单击OK按钮以建立打开空的VHDL文件
2在编辑窗口输入以下源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitylightis
port(clk1:
instd_logic;
light:
bufferstd_logic_vector(7downto0));
endlight;
architecturebehvoflightis
constantlen:
integer:
=7;
signalbanner:
std_logic;
signalclk,clk2:
std_logic;
begin
clk<=(clk1andbanner)or(clk2andnotbanner);
process(clk1)
begin
ifclk1'eventandclk1='1'then
clk2<=notclk2;
endif;
endprocess;
process(clk)
variableflag:
bit_vector(2downto0):
="000";
begin
ifclk'eventandclk='1'then
ifflag="000"then
light<='1'&light(lendownto1);
iflight
(1)='1'then
flag:
="001";
endif;
elsifflag="001"then
light<=light(len-1downto0)&'0';
iflight(6)='0'then
flag:
="010";
endif;
elsifflag="010"then
light(lendownto4)<=light(len-1downto4)&'1';
light(len-4downto0)<='1'&light(len-4downto1);
iflight
(1)='1'then
flag:
="011";
endif;
elsifflag="011"then
light(lendownto4)<='0'&light(lendownto5);
light(len-4downto0)<=light(len-5downto0)&'0';
iflight
(2)='0'then
flag:
="100";
endif;
elsifflag="100"then
light(lendownto4)<='1'&light(lendownto5);
light(len-4downto0)<='1'&light(len-4downto1);
iflight
(1)='1'then
flag:
="101";
endif;
elsifflag="101"then
light<="00000000";
flag:
="110";
elsifflag="110"then
banner<=notbanner;
flag:
="000";
endif;
endif;
endprocess;
endbehv;
然后进行保存。
③编译工程
⑶建立波形文件
1单击File→New命令,在弹出的对话框中选择OtherFilesVector页面中的WaveformFile项,打开波形文件编辑窗口。
2双击窗口左边空白区域,打开InsertNodeorBus对话框。
单击NodeFinder…按钮,打开以下对话框,选择Filter下拉列表中的Pins:
all,并点击List列出所有的端口,通过》按钮把这些端口加入到右边的窗口中,单击OK完成端单击
开始编译
3口的添加。
4回到波形编辑窗口,对所有输入端口设置输入波形,最后保存波形文件。
⑷进行功能仿真
1单击Assignments→Settings…,在弹出对话框中做相关设置。
在Simulationmode设置为Functional,即功能仿真。
指定仿真波形文件后单击OK完成设置。
2单击Processing→GenerateFunctionalSimulationNetlist以获得功能仿真网络表。
3单击Processing→StartSimulation进入仿真页面。
此仿真中不包含延迟信息。
⑸进行时序仿真
功能仿真无误后进入时序仿真,时序仿真是增加了相关的延迟仿真。
是最接近实际情况的仿真。
1单击Assignments→Settings…,在弹出对话框中做相关设置。
在Simulationmode设置为Timing,即时序仿真。
指定仿真波形文件后单击OK完成设置。
2单击Processing→StartSimulation进入仿真页面。
时序仿真成功后进入到下载工作。
⑹器件的下载
①引脚锁定:
单击Assignments→Pins,打开引脚分配窗口。
为每一个端口锁定器件的引脚。
选中输入a,左键不放拖至图上的引脚6,依次操作,分别选中b,c,d,s1,s2,z拖至引脚5,4,3,10,7和引脚35。
然后单击
再编译。
②编程下载
单击
得到选择编程下载文件窗口→单击
设置下载接口方式,选择下载设备USB-Ulaster「USB.0」→在编辑下载文件窗口中的Program/Configure下的方框中打“∨”→单击Start完成下载。
⑺硬件测试
在进行引脚锁定完成之后,重新编译一次,在试验箱上选择实验电路模式NO.7,然后进行下载,此时发现灯会按照预期的方式进行点亮或熄灭,则可验证流水灯设计的正确性。
6、系统仿真及调试
6.1系统仿真
1、设计结果与分析:
在实验中将实验箱的模式选成电路模式NO.7,此时发现灯按如下方式点亮或熄灭:
开始时刻LED流水灯从左到右依次点亮,第二时间段LED流水灯从右到左依次熄灭,第三时间段LED流水灯从中间向两边依次点亮,第四时间段LED流水灯从两边向中间依次熄灭,第五时间段LED流水灯由1,4点亮,然后2,5点亮……以此类推,最后完成一次循环又回到开始时刻,进入第二轮循环。
在此实验中,所用的时钟信号clk1上升沿有效。
当clk1上升沿到来时,则实验箱上D8,D7,D6,D5,D4,D3,D2,D1输出(灯灭)指示light[7],light[6],light[5],light[4],light[3],light[2],light[1],light[0],情况为00000000→10000000→11000000→11100000→11110000→11111000→11111100→11111110→11111111→11111110→11111100→11111000→11110000→11100000→11000000→10000000→00000000→00011000→00111100→01111110→11111111→01111110→00111100→00011000→00000000→10001000→11001100→11101110→11111111→00000000……则可实现所需的流水效果。
2、仿真波形与分析:
⑴功能仿真波形
第一种方式波形图如下图所示:
图6-1第一种方式波形图1
第一个灯开始亮,
图6-2第一种方式波形图2
从左到右灯逐个亮了,
图6-3第一种方式波形图3
灯从右到左一个一个熄灭了。
第二种方式波形图如下图所示:
图6-4第二种方式波形图1
中间两个灯亮了,
图6-5第二种方式波形图2
向两边扩散开来直至全亮,
图6-6第二种方式波形图3
从两边向中间熄灭。
第三种方式波形图及循环如下图所示:
图6-7第三种方式波形图1
1,4灯亮,
图6-8第三种方式波形图2
1,4;2,5;3,6亮,
图6-9循环波形图
全亮之后进入下一组循环。
总体功能仿真波形图如下图所示:
图6-10总体功能仿真波形图
⑵时序仿真波形
与功能仿真波形图类似。
则其总体时序仿真波形图如下图所示:
图6-11总体时序仿真波形图
波形分析:
由功能仿真波形图和时序仿真波形图可知,当clk1上升沿到来时,light[7…0]状态为00000000→10000000→11000000→11100000→11110000→11111000→11111100→11111110→11111111,实现LED流水灯从左到右依次点亮。
light[7…0]又从11111111→11111110→11111100→11111000→11110000→11100000→11000000→10000000→00000000,实现LED流水灯从右到左依次熄灭。
当light[7…0]状态为00000000→00011000→00111100→01111110→11111111时,实现LED流水灯从中间向两边依次点亮。
light[7…0]又从11111111→01111110→00111
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 流水 电路设计 说明书