EDA技术及应用-基于FPGA的电子系统设计:基于FPGA的数字系统设计_第1页
EDA技术及应用-基于FPGA的电子系统设计:基于FPGA的数字系统设计_第2页
EDA技术及应用-基于FPGA的电子系统设计:基于FPGA的数字系统设计_第3页
EDA技术及应用-基于FPGA的电子系统设计:基于FPGA的数字系统设计_第4页
EDA技术及应用-基于FPGA的电子系统设计:基于FPGA的数字系统设计_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CPLD/FPGA项目

开发教程

基于FPGA的数字系统设计EDA实验箱的使用外围接口控制电路的设计综合数字系统的设计

实验箱结构设计EP1C12Q240C8是嵌入式-FPGA(现场可编程门阵列)系列集成电路(IC),工作电压为1.425V~1.575V,可工作在0°C~85°C环境温度下,是一种表面贴装式器件,采用240-MQFP,240-PQFP封装方式。

ALTERA产品型号命名规则(器件、芯片、格式)ALTERA产品型号命名工艺+型号+LE数量+封装+管脚数目+温度范围+器件速度。1.前缀:EP典型器件EPC组成的EPROM器件EPFFLEX10K或FLFX6000系列、FLFX8000系列EPMMAX5000系列、MAX7000系列、MAX9000系列EPX快闪逻辑器件2.器件型号3.LE数量:XX(k)4.封装形式:D陶瓷双列直插Q塑料四面引线扁平封装P塑料双列直插R功率四面引线扁平封装S塑料微型封装T薄型J形引线芯片载体J陶瓷J形引线芯片载体W陶瓷四面引线扁平封装L塑料J形引线芯片载体B球阵列5.管脚6.温度范围:

C:(Commercialtemperature)表示可以工作在0°C到85°C;I:(Industrialtemperature)表示可以工作在-40°到100°C;

A:(Automotivetemperature)表示可以工作在-40°C到125°C;7.速度:数字越小速度越快,6约最大是500Mhz,7约最大是43Mhz,8约最大是400Mhz。以EP2C35F672C6N为例做一个说明:EP:工艺;2C:cycloneII(飓风)(S代表Stratix,A代表arria);35:逻辑单元数,35表示大约有35k的逻辑单元;F:表示PCB封装类型,F是FBGA封装,E(EQFP)、Q(PQFP)、U(UBGA)、M(MBGA);672:表示引脚数量;C:工作温度,C表示可以工作在0°C到85°C6:速度等级,6约最大是500Mhz,7约最大是43Mhz,8约最大是400Mhz;N:后缀,N表示无铅,ES工程样片。

EP

1C

12

Q

240

C

8

NEP1C12Q240C8例7-1简单的三人表决器设计功能描述:三个人分别用手指拨开关D1、D2、D3来表示自己的意愿,如果对某决议同意,各人就把自己的开关拨到“ON”(高电平),不同意就拨到“OFF”(低电平)。16位拨码开关的原理图如图1.5.1所示。表决结果用LED灯显示。如果对某个决议有任意两个或三人同意,即决议通过,实验板上L1亮,否则L2亮。121314IO21O4IO6IO114IO10815实验步骤①双击桌面上

QuartusII9.1的图标,启动

QuartusII9.1软件

②新建工程

③输入设计文件

④设置不用的引脚

⑤指定芯片的管脚

⑥全编译

⑦仿真

⑧下载硬件测试3、输入设计文件

VerilogHDL文件输入

modulebj3(a,b,c,l1,l2);inputa,b,c;outputl1,l2;assignl1=(a&b)|(b&c)|(a&c)|(a&b&c);assignl2=~l1;endmodule3、输入设计文件

②原理图输入

输入输出D1D2D3L1L20000100101010010111010001101101101011110010000010111111001D1D2D0L1的卡诺图:L1的逻辑表达式:L1=D1D2+D0D1+D0D2L2=~L14、设置不用的引脚

将不使用的引脚设为三态输入,以防带电烧毁5、指定芯片的管脚

方法:选择菜单Assignments->Pins或Assignments->PinPlanner命令

6、全编译QuartusII软件的编译器包括多个独立的模块,如图所示,各模块可以单独运行,也可以选择菜单Processing->StartCompilation或者工具栏启动编译过程。7、下载

步骤:(1)安装USB-Blaster(2)选择菜单Tools->Programmer命令,打开下载窗口。

编程硬件设置当前使用的编辑硬件编程模式选择编程进度指示编程文件器件型号开始下载7.2外围接口控制电路的设计7.2.1LED灯控制电路的设计7.2.2数码管控制电路的设计7.2.316*16点阵控制电路的设计7.2.4键盘控制电路的设计7.2.5D/A控制电路的设计7.2.6A/D控制电路的设计7.2.7LCD控制电路的设计一、设计任务实现8个LED灯的周期性(如:1s)的两两交替亮灭。二、设计步骤1.分析设计任务,画出模块图,定义模块名,输入信号名与输出信号名,如图7-9所示。【项目7-1】闪烁灯控制器设计图7-9le2模块图2.分析输入信号与输出信号之间的关系,见表7-1所列。表7-1clk与led2之间的关系clk0s0.5s1s1.5s……led2[7..0]00110011110011000011001111001100……3.打开QuartusII软件,新建工程led2。4.新建文件led2.v,用VerilogHDL描述模块led2。5.全编译,检查程序编译、综合、适配有无错误。6.将不用的引脚设置为三态输入。7.分配引脚。8.全编译并仿真。功能仿真波形如图7-10所示。9.硬件下载并测试。输入信号clk与时钟模块连接,频率设置为1HZ,输出信号led2与8个LED灯连接,观察LED灯闪烁情况是否与设计要求相符。图7-10clk与led2的波形图三、设计思考1.观察时钟频率与LED灯闪烁的关系?2.如何将40MHz进行分频得到1Hz?一、设计任务实现8个LED灯按固定频率依次亮灭。(T=1s)二、设计分析如图7-11所示的仿真波形图,参照上个例题,完成设计。【项目7-2】跑马灯控制器设计图7-11clk与led4的波形图技能实训1闪烁灯设计1.实现L1~L8周期性的同时亮灭。(T=0.5s)2.实现L1~L8周期性的两两交替亮灭。(T=0.5s)0.5s0.5s……….0000000011111111……….0.25s0.25s……….0011001111001100……….流水灯设计1.实现L1~L8按固定频率依次点亮。(f=1Hz)2.实现L1~L8按固定频率依次亮灭。(T=1s)3.实现L1~L8按几种花色依次点亮。0s1s2s3s4s5s6s7s8s0000000100000011000001110000111100011111001111110111111111111111000000010s1s2s3s4s5s6s7s8s000000000000000100000010000001000000100000010000001000000100000010000000技能实训2例如:编写一个8路彩灯控制器,要求彩灯有以下三种演示花型:a.8路彩灯同时亮灭;b.从左至右逐个亮(每次只有1路亮)C.8路彩灯每次4路灯亮,4路灯灭,且亮灭相间,交替亮灭。

在演示过程中,只有当一种花型演示完毕才能转向其他演示花型。技能实训31.闪烁灯实训设计L1,L2,L3的闪烁周期分别为0.25s,0.5s,1s2.流水灯实训设计L1~L8从中间向两边亮灭,再从两边向中间亮灭。7.2.2数码管控制电路的设计1.8段数码管工作原理图7-12数码管内部结构原理图SEL2SEL1SEL0数码管选通000最右边第一个001第二个010第三个011第四个100第五个101第六个110第七个111第八个表7-2数码管选通关系dp{a,b,c,d,e,f,g,dp}为8位宽段选信号,控制数码管的8个段,决定数码管上显示的数字。SEL2,SEL1,SEL0为位选信号,控制8个数码管的选通,选通关系见表7-2所列。2.17段“米”字型数码管工作原理17段“米”字型数码管也分共阳极和共阴极,在实验箱上为共阴极连接方式。“米”字型数码管不仅能显示数字、字母,还能显示自定义字符,比8段数码管显示字符要丰富。SEL3SEL2SEL1SEL0数码管选通0001最右边第一个0010第二个0100第三个1000第四个表7-34个数码管选通关系1、用拨码开关产生十六进制数字,用FPGA产生字形编码电路和扫描驱动电路,然后送给数码管显示,调节时钟频率,感受“扫描”的过程,并观察字符亮度和显示刷新的效果。2、模块如下图所示:

d[3..0]:4位宽输入信号,数值可由4个拨码开关送入。

clk:扫描时钟信号,控制8个数码管循环扫描频率。

rst:复位信号。

a_to_dp[7..0]:8位宽段选信号,控制8段数码管的8个段。

sel[2..0]:3位宽位选信号,控制8个数码管的选通。【项目7-3】8段数码管动态显示十六进制数字3、利用FPGA产生位选信号和段选信号

FPGA数码管驱动控制电路数码管abcdefgdpSEL2SEL1SEL05个拨码开关时钟4.Verilgohdl设计实现modulexianshi(d,clk,rst,a_to_dp,sel);input[3:0]d;inputclk,rst;outputreg[7:0]a_to_dp;outputreg[2:0]sel;always@(d)//字形编码case(d)0:a_to_dp=8'b11111100;1:a_to_dp=8'b01100000;2:a_to_dp=8'b11011010;3:a_to_dp=8'b11110010;4:a_to_dp=8'b01100110;5:a_to_dp=8'b10110110;6:a_to_dp=8'b10111110;7:a_to_dp=8'b11100000;8:a_to_dp=8'b11111110;9:a_to_dp=8'b11110110;'hA:a_to_dp=8'b11101110;'hb:a_to_dp=8'b00111110;'hC:a_to_dp=8'b10011100;'hd:a_to_dp=8'b01111010;'hE:a_to_dp=8'b10011110;'hF:a_to_dp=8'b10001110;default:a_to_dp=8'b0;endcasealways@(posedgeclk,posedgerst)//扫描驱动if(rst)sel=0;elsesel=sel+1;endmodule5、引脚分配clkrstd[3]d[2]d[1]d[0]clka_to_dp[7]a_to_dp[6]sel[2]sel[1]sel[0]a_to_dp[5]a_to_dp[4]a_to_dp[3]a_to_dp[2]a_to_dp[1]a_to_dp[0]注意:1、FPGA未使用的引脚一定要设为三态。2、引脚分配完成或做过修改后,一定要全编译。3、硬件连线时,一定要注意信号名。技能实训【项目7-11】数码管滚动显示电话号码

一、设计任务

用8个数码管滚动显示自己的电话号码,如123-456-78900。二、设计步骤1.分析题意,画出FPGA与输入接口和输出接口示意图,拨码开关作为复位信号,如图7-95所示。图7-95FPGA与外围模块连接图2.设计FPGA滚动显示电话号码驱动控制电路,分析电路内部所需的基本子模块,以及它们的连接。粗略画出各子模块连接图,如图7-96所示。图7-96各子模块连接图3.给每个子模块定义输入信号名和输出信号名,如图7-97~7-99所示。hift_array模块为循环移位寄存器,存放的是电话号码;mux8_1模块为八选一数据选择器;xianshi模块为数码管显示。接着找到相应的逻辑关系,并用Veriloghdl描述每个子模块。4.每个子模块设计完成后,可以全编译并进行仿真,验证各子模块逻辑关系的正确性。5.将各个子模块连接成顶层模块,如图7-100所示。图7-100滚动电话号码顶层原理图

6.全编译并进行仿真,验证顶层模块输入信号和输出信号逻辑关系的正确性,如图7-101所示。sel分别为0,1,2,3,4,5,6,7,代表从右往左第一个数码管到第八个数码管,对应数码管分别显示“-654-321”。图7-101滚动显示电话号码功能仿真图7.分配引脚并下载,进行硬件测试。clk1为移位时钟信号,控制每位数字在数码管上的移位,频率越大,移位越快;clk2为数码管扫描时钟频率,通常clk1的频率要远低于clk2的频率,这里clk1频率选择2Hz,clk2频率选择1MHz。一、实验要求:1、掌握16*16LED点阵结构图。2、实验a:设计点阵驱动电路,在点阵上实现字符“人”

的显示,如图1所示。3、实验b:实现点阵动态点亮,点亮方式为:从第1列到第16列,每一列由上而下依次点亮,最后一列全亮后,再从

第一列由上而下依次熄灭。7.2.316*16点阵控制电路设计

图1点阵显示字符“人”图2(a)公交站台点阵显示屏图2(c)移动营业厅点阵显示屏图2(b)信息亭点阵显示屏二、实验过程:1、16*16LED点阵结构图

实物图如图3所示:

列选信号SEL3~0行驱动信号L15~0图3点阵实物图

结构图如图4所示:

说明:16*16LED阵列中,每一行16个LED灯正极接相对应的行驱动信号L0~L15,每一列16个LED灯负极接相对应的列驱动信号Y0~Y15,只有当行驱动信号接高电平,列驱动信号接低电平,LED才发光。SEL3SEL2SEL1SEL0Y15Y14Y13Y12Y11Y10Y9Y8Y7Y6Y5Y4Y3Y2Y1Y0000011111111111111100001111111111111110100101111111111111011001111111111111101110100111111111110111101011111111111011111011011111111101111110111111111110111111110001111111011111111100111111101111111111010111110111111111110111111011111111111110011101111111111111101110111111111111111101011111111111111111101111111111111112、利用FPGA产生点阵列选信号和行驱动信号

FPGA驱动控制电路16*16LEDL0L1L2L3L4L5L6L7L8L9L10L11L12L13L14L15SEL3SEL2SEL1SEL0

3、QuartusII设计实现点阵驱动控制电路

第一步:确定主模块名,输入信号,输出信号模块名:dot1输入信号:clk,列扫描时钟,100kHz,接外部时钟源rst,复位信号,接拨码开关输出信号:l[15..0],行驱动信号,接点阵L15~L0端

sel[3..0],列选信号,接点阵SEL3~SEL0端实验a:设计点阵驱动电路,在点阵上实现字符“人”的显示.

第二步:确定输入信号,输出信号之间的关系clk—sel关系:always@(posedgeclk)if(rst)sel=0;elsesel=sel+1;sel—l关系:sel[3..0]l[0..15]4’b000016’b00000000000010004’b000116’b00000000000010004’b001016’b00000000000110004’b001116’b00000000000110004’b010016’b00000000001100004’b010116’b00000000011000004’b011016’b00000000110000004’b011116’b01111111100000004’b100016’b01111111100000004’b100116’b00000000110000004’b101016’b00000000011000004’b101116’b00000000001100004’b110016’b00000000000110004’b110116’b00000000000110004’b111016’b00000000000010004’b111116’b0000000000001000

第三步:用quartusII软件进行模块dot1的设计

①双击桌面上QuartusII9.1的图标,启动QuartusII9.1软件②新建工程③输入设计文件④设置不用的引脚⑤指定芯片的管脚⑥全编译⑦仿真⑧下载硬件测试

实验a:设计点阵驱动电路,在点阵上实现字符“人”的显示.4、实验结果分析(1)观察列扫描时钟信号clk,频率选取1Hz,10Hz,50Hz,500Hz,1kHz,........等时,点阵显示结果有什么不同?(2)点阵驱动和数码管驱动原理是否一样?(3)思考日常生活中点阵显示屏显示特点。(4)按照实验a设计方法,思考实验b设计思路。5、实现点阵动态点亮,点亮方式为:从第1列到第16列,每一列由上而下依次点亮,最后一列全亮后,再从第一列由上而下依次熄灭。

一、实验要求1、设计点阵驱动电路,在点阵上实现字符“人”的动态显示。2、设计点阵驱动电路,在点阵上实现字符“1234”的循环左移显示。3、完成实验报告。

演示1

演示2技能实训二、设计思路1、电路划分与模块设计

分析实验要求,画出电路结构图(流程图,MDS图,状态转移图等),分别进行模块设计。2、QuartusII进行点阵驱动电路设计①双击桌面上QuartusII9.1的图标,启动QuartusII9.1软件②新建工程③新建设计文件④设置不用的引脚⑤指定芯片的管脚⑥全编译⑦仿真⑧下载硬件测试

三、设计过程

1、16*16LED点阵结构图

实物图如图1所示:

列选信号SEL3~0行驱动信号L15~0图1点阵实物图

结构图如图4所示:

说明:16*16LED阵列中,每一行16个LED灯正极接相对应的行驱动信号L0~L15,每一列16个LED灯负极接相对应的列驱动信号Y0~Y15,只有当行驱动信号接高电平,列驱动信号接低电平,LED才发光。SEL3SEL2SEL1SEL0Y15Y14Y13Y12Y11Y10Y9Y8Y7Y6Y5Y4Y3Y2Y1Y000001111111111111110000111111111111111010010111111111111101100111111111111110111010011111111111011110101111111111101111101101111111110111111011111111111011111111000111111101111111110011111110111111111101011111011111111111011111101111111111111001110111111111111110111011111111111111110101111111111111111110111111111111111

2、利用FPGA产生点阵列选信号和行驱动信号

FPGA驱动控制电路16*16LEDL0L1L2L3L4L5L6L7L8L9L10L11L12L13L14L15SEL3SEL2SEL1SEL03、电路结构图

地址产生器ROM移位寄存器晶阵显示控制器

4、

QuartusII进行点阵驱动电路各部分设计

地址产生器——模64计数器参数化的ROM模块生成,参照第四章相关知识

移位寄存器——循环左移晶阵显示控制器

5、实验结果分析(1)软硬件错误分析?(2)点阵驱动和数码管驱动原理是否一样?(3)思考日常生活中点阵显示屏显示特点。7.3.5巴克码发生器和检测器的设计一、实验要求:1、设计并实现一个8位巴克码(01110010)发生器。2、设计一个七位巴克码(1110010)检测器,当识别到该码元时,LED灯亮,并且数码管动态显示输入的一串序列。7.2.4矩阵键盘控制接口设计

一、实验要求:1、了解4*8矩阵键盘原理图。2、将键盘上的按键在17段“米”字型数码管上显示出来。scan_cnt[4..0]SEL[2..0]KIN[3..0]对应的按键按键输出显示0000000011100000001000110166000100001011LASTL000110000111CTRLC0010000111101100101001110177001100011011STEPS001110010111EMPTY101000010111022010010101101REGR010100101011CC010110100111EMPTY201100011111033011010111101EXECE011100111011DDscan_cnt[4..0]SEL[2..0]KIN[3..0]对应的按键按键输出显示011110110111EMPTY3100001001110MEMM10001100110188100101001011EE100111000111EMPTY4101001011110ESCE10101101110199101101011011FF101111010111SHIFTS11000110111044110011101101AA110101101011NEXTN110111100111NONE11100111111055111011111101BB111101111011ENTERE111111110111NONE7.3.10乐曲演奏电路实验要求:演奏的乐曲选择《梁祝》片段,其曲谱如下:设计要求:①读懂乐谱;②用频率的高低控制音调的高低,脉冲个数控制音的长短;读懂乐谱组成乐曲的每个音符的频率值(音调)及其持续时间(音长)是乐曲能连续演奏所需要的两个基本数据,因此,只要控制输出到扬声器的激励信号的频率的高低和持续时间的长短,就可以使扬声器发出连续的乐曲声。(1)音调

基本符号:

写法:1234567i读法:DoReMiFaSolLaSiDo为了标记更高或更低的音,则在基本符号的上面或下面加上小圆点。在简谱中,不带点的基本符号叫做中音;在基本符号上面加上一个点叫高音;加两个点叫倍高音;加三个点叫超高音;在基本符号下面加一个点叫低音;加两个点叫倍低音;加三个点叫超低音。低音19557中音14777高音12389285122425722128376083379831896471804357941790563785318951594656826284161420750627253171266如果基准频率选择5MHZ,上表为基于2.5MHZ,各个音调对应的分频比。(2)音长简谱中,音的长短是在基本音符的基础上加短横线、附点

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论