基于Quartus_II_的FPGACPLD开发.doc_第1页
基于Quartus_II_的FPGACPLD开发.doc_第2页
基于Quartus_II_的FPGACPLD开发.doc_第3页
基于Quartus_II_的FPGACPLD开发.doc_第4页
基于Quartus_II_的FPGACPLD开发.doc_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

通信工程专业实验实践课程参考系列之二(可做实验指导书或课外自学参考)基于Quartus II 的FPGA/CPLD开发实训手册(未经同意不得上网传播)通信工程系唐庭龙 夏平2010-3目 录1 Quartus II软件的安装52 Quartus II软件的使用、开发板的使用52.1 原理图方式设计3-8译码器52.2 VHDL编程方式设计2FSK调制器242.3 原理图结合VHDL编程方式设计流水灯433基于QuartusII的FPGA/CPLD数字系统设计实例623.1 数码管静态、动态显示设计(2学时)623.2 液晶接口(LCD1602/LCD12864)控制设计(4学时)633.3 矩阵键盘显示电路设计(2学时)643.4 PS2协议及PS2键盘/鼠标控制设计(2学时)653.5 VGA接口控制设计(6学时)663.6 数字频率计设计(4学时)673.7 数字钟设计(4学时)683.8 抢答器/表决器设计(2学时)693.9 出租车计费器设计(4学时)703.10 电梯控制器设计(2学时)713.11 交通灯控制电路设计(2学时)723.12 篮球计时计分器设计(8学时)733.13 DDS正弦信号发生器设计(8学时)743.14 MP3播放器设计(8学时)754 数字电路设计基础100实例(VHLD语言)第1例 带控制端口的加法器第2例 无控制端口的加法器第3例 乘法器第4例 比较器第5例 二路选择器第6例 寄存器第7例 移位寄存器第8例 综合单元库第9例 七值逻辑与基本数据类型第10例 函数第11例 七值逻辑线或分辨函数第12例 转换函数第13例 左移函数第14例 七值逻辑程序包第15例 四输入多路器第16例 目标选择器第17例 奇偶校验器第18例 映射单元库及其使用举第19例 循环边界常数化测试第20例 保护保留字第21例 进程死锁第22例 振荡与死锁第23例 振荡电路第24例 分辨信号与分辨函数第25例 信号驱动源第26例 属性TRANSACTION和分辨信号第27例 块保护及属性EVENT,第28例 形式参数属性的测试第29例 进程和并发语句第30例 信号发送与接收第31例 中断处理优先机制建模第32例 过程限定第33例 整数比较器及其测试第34例 数据总线的读写第35例 基于总线的数据通道第36例 基于多路器的数据通道第37例 四值逻辑函数第38例 四值逻辑向量按位或运算第39例 生成语句描述规则结构第40例 带类属的译码器描述第41例 带类属的测试平台第42例 行为与结构的混合描述第43例 四位移位寄存器第44例 寄存计数器第45例 顺序过程调用第46例 VHDL中generic缺省值的使用第47例 无输入元件的模拟第48例 测试激励向量的编写第49例 delta延迟例释第50例 惯性延迟分析第51例 传输延迟驱动优先第52例 多倍(次)分频器第53例 三位计数器与测试平台第54例 分秒计数显示器的行为描述6第55例 地址计数器第56例 指令预读计数器第57例 加.c减.c乘指令的译码和操作第58例 24译码器结构描述第59例 24译码器行为描述第60例 转换函数在元件例示中的应用第61例 基于同一基类型的两分辨类型的赋值相容问题第62例 最大公约数的计算第63例 最大公约数七段显示器编码第64例 交通灯控制器第65例 空调系统有限状态自动机第66例 FIR滤波器第67例 五阶椭圆滤波器第68例 闹钟系统的控制第69例 闹钟系统的译码第70例 闹钟系统的移位寄存器第71例 闹钟系统的闹钟寄存器和时间计数器第72例 闹钟系统的显示驱动器第73例 闹钟系统的分频器第74例 闹钟系统的整体组装第75例 存储器第76例 电机转速控制器第77例 神经元计算机第78例ccAm2901四位微处理器的ALU输入第79例ccAm2901四位微处理器的ALU第80例ccAm2901四位微处理器的RAM第81例ccAm2901四位微处理器的寄存器第82例ccAm2901四位微处理器的输出与移位第83例ccAm2910四位微程序控制器中的多路选择器第84例ccAm2910四位微程序控制器中的计数器寄存器第85例ccAm2910四位微程序控制器的指令计数器第86例ccAm2910四位微程序控制器的堆栈第87例 Am2910四位微程序控制器的指令译码器第88例 可控制计数器第89例 四位超前进位加法器第90例 实现窗口搜索算法的并行系统(1)协同处理器第91例 实现窗口搜索算法的并行系统(2)序列存储器第92例 实现窗口搜索算法的并行系统(3)字符串存储器第93例 实现窗口搜索算法的并行系统(4)顶层控制器第94例 MB86901流水线行为描述组成框架第95例 MB86901寄存器文件管理的描述第96例 MB86901内ALU的行为描述第97例 移位指令的行为描述第98例 单周期指令的描述第99例 多周期指令的描述第100例 MB86901流水线行为模型1 Quartus II软件的安装2 Quartus II软件的使用、开发板的使用本章将通过3个完整的例子,一步一步的手把手的方式完成设计。完成这3个设计,并得到正确的结果,将会快速、有效的掌握在Altera QuartusII软件环境下进行FPGA设计与开发的方法、流程,并熟悉开发板的使用。2.1 原理图方式设计3-8译码器一、设计目的1、通过设计一个3-8译码器,掌握祝组合逻辑电路设计的方法。2、初步了解QuartusII采用原理图方式进行设计的流程。3、初步掌握FPGA开发的流程以及基本的设计方法、基本的仿真分析方法。二、设计原理三、设计内容四、设计步骤1、建立工程文件1)双击桌面上的Quartus II的图标运行此软件。开始界面 2)选择File下拉菜单中的New Project Wizard,新建一个工程。如图所示。新建工程向导 3)点击图中的next进入工作目录。新建工程对话框 4)第一个输入框为工程目录输入框,用来指定工程存放路径,建议可根据自己需要更改路径,若直接使用默认路径,可能造成默认目录下存放多个工程文件影响自己的设计,本步骤结束后系统会有提示(当然你可不必理会,不会出现错误的)。第二个输入框为工程名称输入框。第三个输入框为顶层实体名称输入框,一般情况下保证工程名称与顶层实体名称相同。设定完成后点击next。指定工程路径、名称 5)设计中需要包含的其它设计文件,在此对话框中不做任何修改,直接点击next。工程所需其它文件对话框 6)在弹出的对话框中进行器件的选择。在Device Family框中选用Cyclone II,然后在Available device框中选择EP2C35F484C8,点击next进入下一步。器件选择界面 7)下面的对话框提示可以勾选其它的第三方EDA设计、仿真的工具,暂时不作任何选择,在对话框中按默认选项,点击next。第三方EDA工具选择 8)出现新建工程以前所有的设定信息后,点击finish完成新建工程的建立。工程信息2、建立图形设计文件1)在创建好设计工程后,选择File下拉菜单中New菜单。工程下新建设计文件 2)在New对话框中选择Device Design Files页下的Block Diagram/Schematic File,点击OK,出现原理图编辑窗口。建立Block Diagram/Schematic File原理图编辑界面图形编辑器 3)在图形编辑器窗口的工作区双击鼠标左键,或点击图中的符号工具按钮,用鼠标点击单元库前面的“+”号,展开元件库,选择所需要的元器件,点击OK按钮,所选的符号将显现在图形编辑器的工作区域。元件库对话框选择所需的元件用库元件按原理图完成设计设计好的原理图顶层文件 4)完成图形编辑的输入后,需要保存设计文件,该原理图文件作为本设计的顶层文件,注意顶层文件的名称要与工程名一致。保存顶层文件3、 对设计文件进行编译点击菜单栏中的Start compiler按钮进行设计文件的全编译。如果文件有错,在软件的下方会提示错误的原因和位置。整个编译完成,软件会提示编译成功。编译4、 对设计文件进行仿真1)创建一个波形文件,在File下拉菜单中选择New,选取对话框的Other File标签下的VectorWaveform File,点击OK,打开一个空的波形编辑器窗口。建立一个仿真波形文件波形文件设置界面 2)加入输入、输出端口,在波形编辑器窗口的左边端口名列表区双击,在弹出的菜单中选择Node Finder按钮。Insert Node or Bus对话框 3)出现Node Finder界面后,在Filer列表中选择Pins:all,点击List,在Node Finder窗口出现所有的信号名称,点击中间的“”按钮则Selected Nodes窗口下方出现被选择的端口名称,点击OK。Node Finder对话框Node or Bus 其他设置(暂不设置时点击OK)波形编辑器中已加入的端口5)制定输入端口的逻辑电平变化,最后保存该仿真波形文件,文件名与工程名相同。波形编辑器工具栏编辑输入端口波形保存波形文件6)进行仿真设置。在软件中选择Assignments 下拉菜单下的setting命令,打开仿真器设置窗口。设置菜单选择Simulator Settings页面下的simulator mode下的Funtional,即做功能仿真,(也可选择simulator mode下的Timing,即做时序仿真,则下面的产生功能仿真网表文件可以跳过,直接Start simulation)然后点击OK即可。仿真设置功能仿真(or时序仿真)设置然后产生功能仿真网表文件,选择Processing下拉菜单下Generate Function Simulation,产生功能仿真网表;产生功能仿真网表(功能仿真必做,时序仿真不需要该步)点击开始仿真的START按钮开始进行仿真:运行仿真后的仿真结果5 引脚分配6 完整工程的编译7 下载到目标器件1)下载设置2)下载 五、实验现象2.2 VHDL编程方式设计2FSK调制器一、实验目的1、通过设计一个2FSK调制器,初步了解QuartusII采用VHDL编程方式进行设计的流程。2、进一步熟悉FPGA开发的流程以及基本的设计方法、基本的仿真分析方法。二、实验原理三、实验内容四、实验步骤1、建立工程1)双击Quartus软件图标,进入编辑环境。点击File,在下拉菜单中选择New Project Wizard,弹出如下所示的对话框。新建工程2) 点击下面的Next 按钮,弹出下图所示的对话框,此对话框用来对新建的工程选择保存的路径和工程名。以PL_FSK的调制与解调为例,第一个空白处为保存的地方,第二个为新建的工程名,第三个必须要与实体名一致,即输入PL_FSK。工程路径、文件名3)点击next出现下面所示对话框,用来添加其他的工程文件,一般情况下不需要选择,直接点击next.添加其他的工程文件4)点击next出现下面所示对话框,该对话框用来选择元件库及所使用的元件。Family 选择CycloneII,Pin count 选择484,元件选择EP2C35U484C8。(一般根据实际设计选择)选择器件5)点击Next ,出现下图所示对话框。第三方EDA工具选择上图对话框为默认值,不用选择,直接点击Next,出现下图所示对话框。工程信息在上图中点击Finish,即完成了新的工程的创建。2、VHDL程序编辑)点击File下的New弹出下面所示的对话框,选择VHDL File,点击OK,出现新的对话框,在程序编辑窗口中写入程序。建立VHDL文件VHDL程序编辑窗口2)以FSK调制与解调VHDL程序及仿真为例,在程序编辑窗口中写入下面的程序。library ieee; -2FSK调制VHDL程序:use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PL_FSK isport(clk :in std_logic; -系统时钟 start :in std_logic; -开始调制信号 x :in std_logic; -基带信号 y :out std_logic); -调制信号end PL_FSK;architecture behav of PL_FSK issignal q1:integer range 0 to 11; -载波信号f1的分频计数器signal q2:integer range 0 to 3; -载波信号f2的分频计数器signal f1,f2:std_logic; -载波信号f1,f2beginprocess(clk) -此进程通过对系统时钟clk的分频,得到载波f1beginif clkevent and clk=1 then if start=0 then q1=0; elsif q1=5 then f1=1;q1=q1+1; -改变q1后面的数字可以改变,载波f1的占空比 elsif q1=11 then f1=0;q1=0; -改变q1后面的数字可以改变,载波f1的频率 else f1=0;q1=q1+1; end if;end if;end process;process(clk) -此进程通过对系统时钟clk的分频,得到载波f2beginif clkevent and clk=1 then if start=0 then q2=0; elsif q2=0 then f2=1;q2=q2+1; -改变q2后面的数字可以改变,载波f2的占空比 elsif q2=1 then f2=0;q2=0; -改变q2后面的数字可以改变,载波f2的频率 else f2=0;q2=q2+1; end if;end if;end process;process(clk,x) -此进程完成对基带信号的FSK调制beginif clkevent and clk=1 then if x=0 then y=f1; -当输入的基带信号x=0时,输出的调制信号y为f1 else y=f2; -当输入的基带信号x=1时,输出的调制信号y为f2 end if;end if;end process;end behav;VHDL程序编辑VHDL编程完毕,保存为PL_FSK.VHD3、编译VHDL编程完毕,保存后,进行编译,编译方法是:单击功能按钮区的红色三角形,若编译未成功,则需对相应地方进行修改;若编译成功,则出现下图所示提示,然后点击确定(有时会出现警告,但一般对操作不会产生影响,特殊情况下需要修改,以解除警告)。编译虽然成功,只说明程序未出现错误,并不能说明改程序会实现所需的功能,所以还要进行仿真,来判断该程序能实现所需的逻辑功能。编译完成4、仿真1)建立仿真波形文件:FilenewVerification/Debugging Files选项,点击选择Vector Waveform File,点击OK。建立仿真波形文件2) 点击OK后,则出现下面所示的仿真图。需要设置的仿真波形文件3).双击空白处,则会出现新的对话框,该对话框用来对端口进行设置。Insert Node or Bus 4)在上图中点击Node finder(其他均为默认值,不用选择)会弹出如下窗口。Node Finder 对话框5)在上图所示的窗口中Filter选择Pins all,点击List,就会有原程序中有关的输入输出节点,将这些节点选中,点击按钮。如图所示。引入所有端口然后点击OK,如下图所示。Node or Bus 其他设置(暂不设置时点击OK)点击ok,出现如下仿真图输入端口待定的波形文件6) 下面需要对输入信号赋予一定的值,利用波形编辑器工具对输入信号赋值:波形编辑器工具栏首先是时钟信号,点击clk所在的信号,然后点击工具栏中类似始终的快捷选项,则完成了对时钟的设置,用同样的方法对其他输入信号进行设置,(输入信号的图标带有i),各个信号设置完后,如下图;设置好的仿真文件7)点击Assignments,在下拉菜单中点击Settings,在新弹出的对话框中选择Simulator Settings,同时在该对话框中会出现相应的选项,要做功能仿真,故在Simulator mode 中选择Functional即功能仿真,点击OK,,设置完点击保存。仿真设置 在功能仿真之前,要生成一个网络表,具体方法如下:点击Processing,在下拉菜单中选择Generate Functional Simulation Net list 生成功能仿真网络表下图为网络仿真表成功生成时的报告:功能仿真网络表报告8)下一步进行功能仿真,点击仿真按钮(蓝色三角形),则会报告仿真成功,下图为报告图。仿真完成在上图中点击确定,即可看到对所写的程序逻辑上验证的波形图。仿真结果9)分析如下:当Start为高电平时进行FSK调制,当输入信号X为高电平1时,输出Y的脉冲数90目多与X为低电平0时的脉冲数目。10)时序仿真方法如下:点击Assignments,在下拉菜单中点击Settings,在新弹出的对话框中选择Simulator Settings,同时在该对话框中会出现相应的选项,要做功能仿真,故在Simulator mode 中选择Timing,点击OK.20.在仿真图中就会2.3 原理图结合VHDL编程方式设计流水灯一、实验目的1、通过设计一个流水灯,了解QuartusII采用原理图结合VHDL编程方式进行设计的流程。2、进一步熟悉FPGA开发的流程以及基本的设计方法、基本的仿真分析方法。3、掌握设计文件下载到目标器件的过程与方法。二、实验原理三、实验内容四、实验步骤1、建立工程指定工程路径、文件名此例在D盘建立新的工程芯片的选择2、分模块设计1)分频、计数模块LED0设计:a) 建立VHDL文件,写入程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity led0 isport(clk :in std_logic;clk5hz : out std_logic;-reset :in std_logic;dout :out integer range 255 downto 0);end ;architecture a of led0 issignal q1: integer range 255 downto 0;-signal d1: integer range 4095 downto 0;signal clk05 : std_logic;beginPROCESS(clk) -产生显示扫描时钟05HZvariable cnt : INTEGER RANGE 0 TO 1999999;BEGINIF clk=1 AND clkevent THENIF cnt=1999999 THEN cnt:=0;ELSEIF cnt1000000 THEN clk05=1;ELSE clk05=0;END IF;cnt:=cnt+1;END IF;clk5hz=clk05;END IF;END PROCESS;process(clk05,q1)beginif(clk05event and clk05=1)thenif q1=255 thenq1=0;elseq1 = q1+1;end if;end if;dout=q1;end process;end ;分频、计数模块led0b)封装并生成 led0元件: 当前VHDL编辑界面下,点击FileCreat/UpdateCreat Symbol Files for current File,编译通过之后将VHDL文档封装。2)顶层文件设计:File-New-BlockDiagram/SchematicFile,建立一个原理图纸,双击原理图纸空白处,或者点击下图中的符号工具快捷图标图形编辑器在出现的对话框中Project下可以看到上一步封装的led0元件模块,选中该模块放置到原理图纸空白处,如下所示:封装之后的模块led03) 设计LEDROM宏模块:点击Tools-MegaWizard Plug in Manager,(或者双击原理图纸空白处,出现的对话框中点击MegaWizard Plug in Manage下图所示)开始创建宏模块创建宏模块No1创建宏模块No2本设计选择ROM:1 PORT ,命名为ledrom;创建宏模块No3ROM内256字节的数据,每个字节对应一个16位的输出数据的地址;创建宏模块No4为ledrom引入数据,指向的数据为led.mif,Led.mif中数据 By The Way : Mif 文件建立过程如下:点击File-newMemory FileMemory Initialation File ,按提示指定8位数据位宽及256字节的深度,并在相应的地址填入数据如上图所示,保存为led.mif ;其中的数据可以用Excel或者Matlab等工具批量生成,具体方法请自行研究;Mif 文件建立创建宏模块No4完成宏模块ledrom后将其放置到原理图纸中;3、完成电路原理图连接:加入输入输出引脚端口,双击端口给其命名:clk ,led15.0(总线型);连接电路原理图;对相关信号命名dout15.0 (总线型):如下所示:输入、输出、双向端口连接好的原理图 该原理图文件作为顶层文件,名称与工程文件名一致;4、仿真:1)建立仿真波形文件,引入需要仿真的端口及信号节点;创建一个波形文件引入端口2)对输入信号赋予一定的值,利用波形编辑器工具对输入信号赋值,此例只需对时钟信号进行设置,为50Mhz3)设置仿真方式:功能仿真;设置对波形文件进行功能仿真仿真之前先创建一个网表文件4)运行仿真,结果分析:仿真之后的波形注意,本例,考虑到实际人眼观察led灯的亮灭情况,计数器频率为5hz ,即每0.2秒ledrom地址顺序加一,并读取一次该地址中的16位数据如“1111111111111111”,对应端口置高电平,点亮相应的LED灯,若频率过高,人眼观察到的可能是,闪烁非常快甚至灯的常亮;本仿真中,为减少计算机处理时间,改动了led0模块的程序,将计数器频率设在5M或者更大,最后可以得到Rom中的数据相应的输出到led15.0,仿真说明设计是正确的。下载到目标器件,则必须考虑人眼睛的暂态效应,注意计数器的频率。5)分配引脚A) 调出引脚分配栏调出引脚分配栏B)根据开发板实际电路图,找到对应的引脚:开发板的LED连接的电路图FPGA的I/O接口可以看到:16个LED灯LED1-LED 16通过标记为JP1的I/O接口连接到目标芯片上,即目标芯片的50-35引脚,查看本开发板的I/O接口对照表,EP2C35F484C8 的I/O引脚按上图所列,引脚分配如下:分配引脚6)引脚分配之后再编译一次,软件会在工程目录下生成后缀为SOF的文件可供JTAG下载;最后一次编译5、下载1)下载设置:选择TOOLS-Programmer,在以下界面点击Hardware Setup,进行硬件设置(一般设置一次即可,以后不必再设),选中连接到计算机的下载线,ByteBlaster或者USB-ByteBlaste等,根据实际连接情况:下载设置2)下载:选择JTAG下方式,选中要下载的SOF文件,勾选Program/Config,点Start,下载完毕,在开发板上观察结果即可。3基于QuartusII的FPGA/CPLD数字系统设计实例3.1 数码管静态、动态显示设计(2学时)一、设计目

温馨提示

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

评论

0/150

提交评论