可编程逻辑电路设计实验指导书.docx
《可编程逻辑电路设计实验指导书.docx》由会员分享,可在线阅读,更多相关《可编程逻辑电路设计实验指导书.docx(22页珍藏版)》请在冰豆网上搜索。
可编程逻辑电路设计实验指导书
《可编程逻辑电路设计》
实验指导书
南京工程学院
2007-5
第一章概述
当今,电子电路越来越复杂,数字电路被更多应用到电路设计中,可编程逻辑器件已经广泛地用在电子设计中,而且在电路中的占有比例越来越大,它一方面提高了可靠性,另一方面也增加设计的灵活性和可维护性,使电子电路的设计更加方便快捷。
在硬件的设计思路上,要改变原来传统的设计方式,用设计软件的方式方法来设计硬件。
在学习新方法的过程中,一款功能强大、使用方便的辅助学习工具必不可少。
南京伟福公司结合多年EDA开发经验,分析国内外多种EDA实验仪,取长补短,研发出了伟福EDA6000/EDA2000型实验仪,伟福EDA6000/EDA2000实验仪的出现为您学习EDA提供巨大帮助。
综合起来
EDA6000/EDA2000实验仪具有以下多种特点:
综合型实验仪:
EDA6000/EDA2000实验仪可以完成SOPC/DSP/FPGA/EPLD/iPAC等各种实验,并且板上自带仿真器(EDA6000),可以完成各种实验。
软开放:
全开放的实验仪,由学生自己连线,对于学生来讲,费时费力过于麻烦,而且还容易出错,对于所设计的电路来讲,工作频率不会高,干扰大。
再看完全不开放的实验仪,接线全部固定,所做的实验就有限,只能局限于设计好的几种实验内容,限制了学生的开发能力。
伟福EDA6000/EDA2000采用软开放式结构,对实际电路接线固定,即能工作高频状态,干扰、辐射也小,但对于学生来说,他又可以用软件方式按设计要求将各IO脚连接起来。
逻辑分析仪:
在EDA实验或EDA设计中,单凭有限的输出设备(数码管、发光二极管)是不能完全发现设计中的错误,更不能观察、理解信号的先后时序关系。
在电路工作于高频状态时,这种情况尤其突出。
当设计中出现一些不可知的错误,只能拍脑袋苦想,或借助于其它的设备,例如示波器等,操作麻烦,还不一定能和电路同步。
伟福EDA6000/EDA2000提供了8路逻辑分析仪,采样频率可达50MHz,采样深度达32K,并可指定采样的触发条件。
可以将电路的工作状态采样回来,以波形的方式显示出来,让学生直观地看到电路的工作时序,查出产生错误的原因。
软件连接:
由于是软开放的结构,学生在实验或设计时,需要自己连线,伟福EDA6000/EDA2000采用“软件配置”技术,在软件上接好需要的连线,下载到实验仪即可实现接线,如果连线过程有冲突,软件还会给出提示,如果是硬接线,接错线可能导致实验仪故障,甚至是损坏,而“软件配置”技术就能有效避免这种现象。
这种软件接线还有一个好处,就是将定义好接线保存在磁盘上,下次做实验或设计时,从盘上读出即可,如果是硬件接线,学校中有很多人共用实验仪,否则根本无法将接线保留下来。
伟福EDA6000/EDA2000实验仪的频率选择也是采用软件方式设置,无需用跳线跳来跳去,使用跳线不仅烦琐,而且容易出错。
智能译码:
在EDA实验中,最常用到的显示电路,如果显示电路接到固定的IO脚,占用供实验用的IO脚,不但如此,这还要求学生在做EAD实验时,要连显示电路和译码电路一起设计,对于初学者有一定的难度。
即使到了学生能熟练地写出译码电路,这些电路也浪费了器件内部大量资源,这些功能本来应该是由实验仪提供的。
在提供这些译码显示功能时,大部分实验仪采用的外接译码器件,这种方法接线固定不能改变,使用起来有局限性。
伟福EDA6000/EDA2000实验仪采用智能译码技术,与软件连接技术相似,软件上设置好连译码方式后,下载到实验仪上即可在实验仪实现所要求的译码电路。
智能译码不是只提供几种模式由学生,如果超出了这有限的几种接线之外,学生就束手无策。
伟福的智能译码技术在安全的条件下,可以由学生任意定义接线方式,灵活多变,而且可以将接线定义保存在磁盘上。
软、硬件结合:
国内外众多的EDA实验仪几乎都是单硬件工作方式,接线要在实验板上接,模式要在实验板上选择,观察结果只能看板上的LED或八段数码管,如果是高速信号只能看最终的输出结果,工作时序,信号波形一无所知,如果有RAM相关的实验,因为RAM数据无法下载,只能以ROM代替,外部设备的选择只能用跳线来实现或干脆拔掉有冲突的芯片。
伟福EDA6000/EDA2000实验系统采用软、硬件结合技术,可以在PC机的软件上定义实验所要连线,下载到实验仪上即可。
实验仪运行的结果可以在软件上观察到,如果想观察高速信号,就用逻辑分析仪采样,传上来进行分析。
软件可以将RAM的数据下载到实验仪上,供实验仪做VGA、DAC等数据输出类实验。
也可将ADC采样的到数据上载到PC机的软件中,供学生分析、观察、保存。
模式可变:
不开放结构的实验仪,由于接线全部固定,模式无法改变,或者在器件中浪费大量资源来设置模式,这样既不实用,也不利于学习;全开放的结构,用手工接线来设置模式,干扰大不说,不小心连错线还会造成仪器的损坏,有些半开放的实验仪,由于不能与上位机相连,只能在硬件实验上选择有限的几种模式,既不灵活,观察也不方便。
伟福EDA6000/EDA2000由于采用“软件配置”技术,可以用软件设置模式,下载到实验仪,灵活多变。
在软件设置模式时,如果器件之间有冲突,软件会给出警告,避免接错线的可能。
适配板与实验仪独立:
伟福EDA6000/EDA2000实验仪采用FPGA/EPLD适配板与实验仪主体相互独立的结构,实验仪的显示译码、键盘输出均不占用适配板的资源。
适配板与实验仪之间用IO脚连接,从理论上讲,这种结构可以无限扩展FPGA/EPLD实验种类,只要在FPGA/EPLD适配板上将正确的IO信号接到实验仪上,就可以对这种FPGA/EPLD进行实验和设计,加上伟福的“软件配置”技术,更是如虎添翼,不但可扩展性强,使用也灵活,不再束手束脚。
采用这种相互独立的结构,可以在适配板上正对每种FPGA/EPLD来设计制做与芯片完全吻全的编程下载电路,使FPGA/EPLD的编程下载更加可靠、稳定。
可编程下载器件的种类也不会有限制了,只要有该器件的适配板就行。
用户所要做的事就是将编程并行口接到实验仪上。
多种外部设备:
实验仪提供了多种常用外部设备,为学生提供典型的学习电路。
这些电路包括并行ADC、串行ADC、并行DAC、串行DAC、VGA、PS2鼠标、USB、三线EEPROM读写控制、I2C(二线)EEPROM读写控制、8X8显示点阵扫描、存储器读写控制等电路,这些电路真实地体现了EDA设计的高速、时序严格、抗干扰等特点,
用户控制电路:
在EDA的学习中,应强调真实性和实用性。
在实际的EDA电路中,一般都有CPU控制电路与之相结合,完成一个应用系统。
伟福EDA6000/EDA2000实验仪提供了一个用户CPU,并且有外围的键盘、八段数码显示、液晶显示屏。
使得学生不仅能做EDA的分部实验和设计,而且可以将各部分组合起来,做完整的系统级的设计。
第二章硬件结构
伟福EDA6000/EDA2000实验仪的功能框图如上图。
FPGA/EPLD为EDA实验适配板,通过IO脚与外部设备和配置电路连接。
外部设备有喇叭(蜂鸣器)、并行ADC(ADC0809)、串行ADC(TLC549)、并行DAC(DAC0832)、串行DAC(TLC5620)、VGA控制器、PS2鼠标接口、三线EEPROM(93C46)、二线EEPROM(24C02)、8x8显示点阵、存储器。
用户控制CPU与EDA适配板结合组成完整的系统。
“软件配置”技术由配置电路来实现,配置电路从计算机中的EDA6000/EDA2000软件开发环境中下载配置定义,将FPGA/EPLD的IO脚按用户要求做相应配置,将八段数码管、发光二极管、键盘接到要接的IO脚上,如果FPGA/EPLD在运行状态,配置电路还会将FPGA/EPLD的各IO脚的状态传到计算机上,在软件界面中显示。
在实验仪上也保存了我们所提供的样例实验的配置定义,即使实验仪没有连接到计算机上,也可以直接在实验仪上根据不同的实验内容,用设置键来选择IO脚配置。
实验仪的布局如图,系统的控制、IO管脚的配置在FPGA/EPLD适配板的下方。
第三章ALTERA开发环境使用入门
世界各大FPGA/EPLD生产商都有自己的EDA开发环境,也有专业的第三方EDA软件。
ALTERA公司的MAX+plusII是其中较常被使用的EDA开发环境,它操作方便、功能强大,提供了原理图输入和VHDL语言输入功能,在环境中可以完成编译、查错、设计驱动信号、逻辑功能模拟、时序功能模拟、对FPGA/EPLD芯片编程等功能。
下面以VHDL语言输入设计为例,一步一步描述在MAX+plusII开发环境中如何完成EDA的设计流程。
1.建立工作文件目录。
我们将一个设计称为一个项目,在硬盘上建立一个工作文件
目录,目录名应重名命名为英文名。
以后与该项目有关的所有设计文件都保存在此目录下。
MAX+plusII软件安装好后,会在硬盘上生成一个MAX2WORK目录,我们在MAX2WORK之下建立一个工作文件目录,名命为“EX”,本例中所有文件都存在此目录下。
2.新建设计文件。
启动MAX+plusII开发环境,选择菜单[File]下的[New]功能,出现对话框,要求确认“新建”何种类型的文件,有四种类型文件可选择,因为我们新建VHDL文本,所以选择第三个“TextEditorfile”。
对话框如图。
确认对话框后,开发环境生成一空的文本编辑窗口用于输入VHDL文本。
3.输入VHDL设计描述。
在窗口输入如下VHDL程序,本例完成的是一个一位全加器的功能。
LIBRARYIEEE;
USEIEEE.std_logic_1164.ALL;
ENTITYEX1IS
PORT(a:
INSTD_LOGIC;
b:
INSTD_LOGIC;
c_in:
INSTD_LOGIC;
sum:
OUTSTD_LOGIC;
c_out:
OUTSTD_LOGIC
);
ENDEX1;
ARCHITECTUREbehvOFEX1IS
BEGIN
sum<=aXORbXORc_in;
c_out<=(aANDb)OR(c_inAND(aORb));
ENDbehv;
其中“a”和“b”表示全加器的“输入1”和“输入2”,“c_in”表示“
前级进位输入”,“sum”
表示全加器的“和”,“c_out”表示全加器的进位。
4.保存VHDL文本。
输入VHDL语言后,选择菜单[File]下的
[SaveAs]功能,出现如图对话框,在“Directories”中选择刚才
新建的项目文件目录“C:
\MAX2WORK\EX”,在“FileName:
”处填上
文件名“EX1.VHD”。
按“OK”确认退出。
5.将当前文件设为项目的主文件。
因为
在EDA设计中,一个项目按功能不同或层次
不同,可以包括很多设计描述文件,这些文
件可以是原理图也可以是VHDL,也可以是混
合的。
设计时,可以按功能分模块来完成,
也可以自底向上逐步完成。
将当前文件设为
项目的主文件后,以后所进行的编译、仿真、
测试都是以此文件为顶层文件,包括其下层
文件来完成的,而此文件的上层文件和并行
文件都不受影响。
选择菜单[File]的
[Project]的“SetProjecttoCurrentFile”
功能可以将当前文件设成项目的主文件。
6.选择设计所使用的器件。
这里的器件就是
指每个设计所使用的FPGA或EPLD芯片,
ALTERA公司具有代表性的FPGA为FLEX10K系列的EPF10K10LC84-4。
具有代表性的EPLD为MAX7000S系列的EPM7128SLC84-15。
选择菜单[Assign]的[Device...]功能,出现如图对话框,在“DeviceFamily”中选择ALTERA公司的器件系列,当选定了器件系列后,“Devices”框内出现该系列的各种芯片,如果“ShowOnlyFastestSpeedGrades”被
选中,则器件框中只显示最快速度的器件,去掉“只显示最快芯片”前的勾,器件框中显示该系列所有芯片。
本例中,我们选择MAX7000S系列中的EPM7128SLC84-15芯片。
7.编译设计项目。
选择[MAX+plusII]菜单的[Compiler]功能,出现如图窗口,按“Start”
开始编译。
如果有错,程序会自动停止并指出错误,用户解决错误后,再重新编译,直到全部编译完成。
8.建立输入控制波形。
在对设计进行验证时,要给输入信号加上
驱动,用波形文件来描述驱动信号的高低状态和前后时序,并加在芯
片相应的管脚上。
选择[File]的[New]功能,在对话框中选择
“WaveformEditorfile”,开发环境打开一空的波形编辑窗口。
9.加入信号接点。
在窗口中加入需要驱动的
信号和想要观察的信号,选择波形窗口上方的
[Node]菜单的[EnterNodefromSNF]功能。
出现
如图对话框,按“LIST”按钮,在左边“Available
Nodes&Groups”出现设计中所有信号名,可以
在窗口中选中其中想要观察的信号和需要驱动的
信号,按“=>”按钮将信号加入右边选中窗口。
确认退出。
10.编辑波形。
波形窗口中已经有需要驱动的信
号的想要观察信号的信号名,现在我们定义需要驱动
的信号状态和时序,在本例中只有三路输入信号:
c_in、b、a,三路信号共有8个状态,在波形定义时,
只要列举出这8个状态就可以从输出波形中观察到
设计的功能是否正确。
在波形定义窗口中,选中将要
定义的信号名,按鼠标右键,选择弹出菜单的
[Overwrite]下的[Clock...]功能,出现如图的时钟
脉冲波形定义对话框,来定义等宽度的时钟信号,
“StartingValue”表示该信号的初始状态,
“MultipliedBy”表示信号脉冲的宽度。
分别选中
三个信号,在弹出菜单中分别将c_in信号的宽度填
为4、b信号的宽度填为1、a信号的宽度填为2,完
成定义后三路信号的波形如图。
三路时钟信号组成了8种状态,sum和c_out两
路为输出信号,现暂时无法显示,要等待模拟完
成后才会有波形输出。
11.保存波形文件。
选择菜单[File]的[Saveas]功能
将波形文件保存下来,便于下次模拟时调用。
波形文件的后缀为“.SCF”。
12.软件模拟仿真。
当有了驱动信号以后,就可以对设计
进行模拟仿真,验证设计是否正确。
选择[MAX+plusII]菜单的
[Simulator]功能,出现如图对话框,按“Start”按钮,开始
运行软件模拟仿真,下图为仿真后的波形,可以看到仿真输出
的sum和c_out信号,“Value”表示标尺位置上各信号的当前
值,在窗口内拖动标尺,观察各信号的当前值
是否符合设计要求。
在波形窗口中,上方有几
个显示框用来显示标尺的时间位置,鼠标的时
间位置及两者的时间差,可以用这种方法来观
察两信号间的延时。
如果信号过多,可用垂直
滚动棒移动窗口,如果想要观察的时间不在当
前窗口内,可用水平滚动棒将窗口移动到相应
的时间段,用窗口左边的放大、缩小功能可以
将波形时间展开、收缩,以观察波形的局部细
节或全局概况。
13.时序分析。
为了能了解软件模拟仿真中各信号之间的具体延时量,可以用MAX+plusII提供的时序分析功能来做时序分析。
选择[MAX+plusII]菜单的[TimingAnalyzer]功能,出现如图对话框,按“Start”按钮,启动时序分析,分析完成后,各信号之间的延时时间以表格形式显示出来。
14.将信号锁定到芯片的管脚。
前面所做的只是逻辑功能的软件模拟仿真,即使模拟仿真、时序分析都达到设计要求,这只是理论上的结果,实际硬件的执行与软件模拟不一定完全一样,最后必须做硬件的验证。
在做硬件验证时,各个输入、输出信号必须锁定到具体芯片的脚上,才能将外部信号加进来,将输出信号接出去,根据你的外部电路设计或根据EDA实验仪的要求,将设计中各个输入、输出信号锁定到芯片的管脚上。
选择菜单[Assign]下的
[Pin/Location/Chip...]功能,出现如图信号与芯片管脚锁定的对话框,在“NodeName”框内填入需要输入、输出的信号名,在“PinType”框内显示出该信号的输入、输出类型,在“Pin”复选框内选择芯片的管脚,按右下角的“Add”按钮将信号与管脚的锁定关系加入“ExistingPin/Location/ChipAssignments”框内,当所有的信号都加入后,按“OK”确认退出。
注意:
如果你的设计中有时钟信号、复位信号、输出允许信号等可以全局使用的信号,编译器会自动将这些信号分配到芯片的相应全局信号管脚,如果你锁定的管脚不是全局信号脚,在编译综合时,系统会提示有错,解决的方法是,选择[Assign]菜单下的[GlobalProjectSynthesis]功能,在弹出的对话框的“AutomaticGlobal”栏内,去掉所使用全局信号前的选中勾,使其不会被自动分配。
按“OK”钮确认退出。
15.重新编译设计项目。
当设计项目中的信号被锁定到芯片的各管脚上后,需要对项目
重新进行编译,重新编译产生的数据文件就会包含管脚的定义。
选择[MAX+plusII]菜单的
[Compiler]功能,出现编译窗口,按窗口内的“Start”按钮,重新编译。
16.数据下载到芯片上。
当用软件仿真验证设计的电路工作正
常。
就可以将编译产生的位图文件编程下载到FPGA或EPLD的芯
片上,与外围电路一起共同对设计进行硬件验证。
在本例中用
EDA6000/EDA2000的实验仪来验证前面所设计的全加器的功能是
否正确。
在编程下载之前,首先用下载电缆将计算机的打印口连
接到有FPGA/EPLD芯片目标板(或EDA6000/EDA2000实验仪上),
接通目标板(实验仪)的电源。
选择[MAX+plusII]菜单的
[Programmer]功能,启动编程下载程序,如果是第一运行编程功能,软件会自动弹出对话框,让用户设置编程下载硬件连接方式,如图,在对话框中的“HardwareType”选择框内选择“ByteBlaster(MV)”编程下载方式,在软件安装好后只需设置编程下载方式一次,设置好以后如果下载的硬件没有变化,无需再次设置。
在编程下载窗口中,EPLD的下载与FPGA下载略有不同,EPLD的下载按“Program”钮,软件会对目标板上的芯片检测、编程、校验,完成后显示“编译完成”,FPGA的下载要按“Configure”钮,软件将程序下载到目标板上芯片中。
17.设置/选择实验仪的工作模式。
当程序下载到芯片上后就可以用实验仪进行实验来验证我们所做设计是否正确,在进行实验之前,要对实验仪的模式进行设置,以便将芯片的输入输出管脚接到实验仪的键盘和LED上,工作模式可以从计算机上的EDA6000/EDA2000软件下载到实验仪中,在没有计算机时,也可以在实验仪上选择相应模式,这些模式已经固化在实验仪中。
在实验仪上选择工作模式:
按下实验仪上“MODESELECT”模式选择按钮不松,八段数码管显示“------XX”,其中“XX”为当前模式号,按“K7”钮,模式号减1,按“K6”钮模式号加1,本例实验中对应的工作模式为“模式1”,按动“K6”或“K7”直到模式号显示为“------01”,松开“MODESELECT”按钮确认,再次按下、松开此按钮,实验仪进行工作状态。
在“模式1”情况下,K0键接信号“a”,K1键接信号“b”,K2键接信号“c_in”,同时这三个输入信号的状态也在L0、L1、L2上显示,两个输出信号“c_out”接L9,“sum”接L8,同时八段数码管也显示五个信号的值,S0接信号“a”,S1接信号“b”,S2接信号“c_in”,S4接信号“sum”,S5接信号“c_out”。
18.在实验仪验证设计。
设计电路已经下载到实验仪的适配板上,实验仪的工作模式也选择好,下面就可对设计进行硬件上验证。
分别按下K0、K1、K2键,改变其状态,表示三个输入信号“a”“b”“c_in”的状态的改变,观察发光管L8和L9,以及八段数码管的S4和S5的输出是否有相应变化。
至此,用户已经一步一步地学会了在ALTERA的EDA开发环境MAX+PlusII中,从最初的新建项目直到最后用硬件来实现设计思想的各个主要步骤,为了易于学习,中间有一些环节没有介绍,这需要用户在以后的学习和开发过程中逐步了解,逐步提高。
在开发过程中,也可以参考EDA开发环境的说明和软件中的帮助。
注意:
在ALTERA的MAX+PlusII开发环境中,如果用户在设
计中使用了时钟信号、复位信号、输出允许信号等可以全局使用
的信号,编译器会自动将这些信号分配到芯片的相应全局信号管
脚,如果你锁定的管脚不是全局信号脚,在编译综合时,系统会
提示有错,解决的方法是,选择[Assign]菜单下的[Global
ProjectSynthesis]功能,在弹出的对话框的“Automatic
Global”栏内,去掉所使用全局信号前的选中勾,使其不会被自
动分配。
按“OK”钮确认退出。
实验一D触发器设计
一.实验目的
1.掌握用VHDL语言设计时序电路的方法。
2.掌握用VHDL语言设计D触发器的方法。
3.熟悉电路设计的系统仿真和实验箱仿真过程。
二.实验内容
用VHDL设计一个同步复位的D触发器。
三.设计思路
本程序即采用RTL描述的方法,编写VHDL源程序。
四.实验步骤
1.分析实验要求,看懂设计思路。
2.编写VHDL源程序。
3.在MAX+plus软件环境下调试,并进行波形仿真。
4.下载到仿真开发系统中,检验正误。
5.完成实验报告,包括源程序、仿真波形和实验结果分析。
实验二七人表决电路
一.实验目的
1.掌握用VHDL语言设计时序电路的方法。
2.学会运用CASE或IF语句。
3.熟悉电路设计的系统仿真和实验箱仿真过程。
二.实验内容
设计一个七人表决器,并行输入,当大多数赞成时,电路输出为“1”,反之,当没有超过半数以上的赞成,电路则输出“0”。
三.设计思路
分析七人表决器的输入输出关系,可利用全加器电路或者行为描述方式实现表决器的功能。
四.实验步骤
1.分析实验要求,看懂设计思路。
2.编写VHDL源程序。
3.在MAX+plus软件环境下调试,并进行波形仿真。
4.下载到仿真开发系统中,检验正误。
5.完成实验报告,包括源程序、仿真波形和实验结果分析。
五.实验思