FPGA实验教程_原理图设计部分
- 格式:pdf
- 大小:1.11 MB
- 文档页数:27
实验一、原理图输入与仿真及由原理图生成元器件模块实验一、实验容1、完成所给原理图的设计输入。
2、对已完成的原理图进行Verilog转换和仿真测试。
3、学习观察器件下级原理图及由原理图生成模块的方法。
二、一位全加法器的原理图设计输入、仿真测试及Verilog转换。
图1.1 全加器原理图表1-1A B Cin Sum Cout0 0 00 0 10 1 00 1 11 0 00 11 1 01 1 11)新建一个项目名为LAB项目,点击菜单Project New Source,选择添加类型为Schematic(参见图1.2——图1.4),完成如图1.1原理图的设计输入。
图1.2创建新工程图1.3 设置工程属性图1.4 新建原理图输入2)添加测试代码,新建用XST或ModelSim Simulator 进行仿真测试(参见图1.5——图1.9),将仿真结果填入一位全加法器真值表1-1中。
图1.5 添加测试模块图1.6 关联被测试模块图1.7 添加激励测试代码图1.8 检查语法后点击仿真图1.9 仿真结果3)确认项目的属性中preferred language 为Verilog,利用生成器将原理图转换为Verilog描述的语言。
(如图1-10所示)图1.104)将原理图转换为symbol,以便能在其他原理图中使用。
(如图1-11所示)图1.11三、新建一个原理图文件Comp,在原理图中插入生成的图标myadder(如图1.12)。
图1.12四、选中myadder模块,按下push按钮,即可查看该模块的下级原理图(如图1.13)。
图1.13五、参照以上步骤,在Comp中完成图1.14的二位比较器原理图的设计输入。
并进行仿真测试及Verilog转换,并将仿真结果填入表1-2。
表1-2A与B的关系Q值A>BA<BA=B图1.14。
艾米电子工作室—让开发变得更简单FPGA 入门系列实验教程——点亮LED1. 实验任务点亮发光二极管。
通过这个实验,熟悉并掌握CPLD/FPGA 开发软件QuartusII 的使用方法和开发流程以及Verilog HDL的编程方法。
2. 实验环境硬件实验环境为艾米电子工作室型号EP2C5T144 开发套件。
软件实验环境为Quartus II 8.1 开发软件。
3. 实验原理FPGA 器件同单片机一样,为用户提供了许多灵活的独立的输入/输出I/O 口(单元)。
FPGA 每个I/O 口可以配置为输入、输出、双向、集电极开路和三态门等各种组态。
作为输出口时,FPGA 的I/O 口可以吸收最大为24mA 的电流,可以直接驱动发光二极管LED 等器件。
图1. 1 为8 个发光二极管硬件原理图,本原理图对应艾米电子工作室型号为EP2C5T144 FPGA 开发板及接口板。
通过原理图可知如果要点亮这八个LED,所以只要正确分配并锁定引脚后,在相应的引脚上输出相应高电平“1”,就可实现点亮该发光二极管的功能。
本工作室开发板均采用输出“1”点亮LED 的模式,以后就不再另作说明。
图1. 1 发光二极管LED 硬件原理图艾米电子工作室—让开发变得更简单FPGA 入门系列实验教程——LED 闪烁灯1. 实验任务让实验板上的8 个LED 周期性的闪烁。
通过这个实验,熟悉并掌握采用计数与判断的方式来实现分频的Verilog HDL 的编程方法以及Quartus II 软件的使用方法和开发流程。
2. 实验环境硬件实验环境为艾米电子工作室型号EP2C8Q208 增强版开发套件。
软件实验环境为Quartus II 8.1 开发软件。
3. 实验原理艾米电子工作室开发套件板载50MHz 的时钟源,假如我们直接把它输入到发光二极管LED,由于人眼的延迟性,我们将无法看到LED 闪烁,认为它一直亮着。
如果我们期望看到闪烁灯,就需要将时钟源的频率降低后再输出。
fpga原理图设计方法
FPGA原理图设计方法如下:
1. 准备工作
在开始设计FPGA原理图之前,首先需要明确设计目标,了解所需电路功能,并准备好设计所需的电路元件、电源以及相关工具和软件。
2. 确定电路结构
根据电路功能和要求,设计电路的整体结构。
通常可以将电路划分为几个模块,然后根据模块功能设计对应的电路。
3. 绘制原理图
使用电子设计自动化工具(EDA工具)来绘制FPGA的原理图。
在绘制原理图时,应按照电路结构逐个模块进行绘制,并使用合适的元件符号和连线方式。
4. 连接电路元件
根据电路结构和原理图,逐个连接电路元件。
注意保持电路的连续性和正确性,在绘制连线时避免交叉和短路。
5. 添加电源和地
为电路添加合适的电源和地引脚,并按照原理图正确连接电源和地线。
在连接时,确保电源和地的连接正确无误,并符合电路的电源要求。
6. 绘制引脚定义
根据电路功能和FPGA引脚规格,在原理图中添加引脚定义。
引脚定义通常包括输入、输出以及其他特殊功能引脚。
7. 进行验证和修改
完成原理图绘制后,对原理图进行验证,确保电路设计无误。
如果发现问题或需要修改,及时进行调整和改进。
8. 生成输出文件
根据原理图和设计需求,使用EDA工具将原理图转化为
FPGA的可配置文件(如HDL代码或bit文件),以便后续进
行FPGA的配置和实现。
以上是FPGA原理图设计的一般方法,根据具体的设计需求
和EDA工具的使用习惯,可能还需要进行其他操作或步骤。
注意在设计过程中,避免出现相同的文字或标题,以免混淆和歧义。
FPGA轻松学习用QuartusII通过原理图完成与门电路设计打开QuartusII软件,程序主界面如下:1,新建一个工程点击File——>New Project Wizard,打开创建新工程向导,这里你将完成工程的基本设定选项。
1,Project name and directory——工程的名称与目录2,Name of the top-level design entity——顶层设计实体的名称3,Project files and libraries——项目文件与库4,Target device family and device——目标设备的族类5,EDA tool settings——EDA工具设定这里一般设定好工程名称和目录,顶层设计实体名称以及目标设备族类就可以了,其他的暂时直接使用默认项就可以了。
2,新建一个设计文件通过点击File——>New打开新建文件选择框,由于我们这里使用原理图描述实现的,则文件类型选择Design Files——>Block Diagram/Schematic File,就新建了一个原理图文件,将其保存起来,注意命名要跟前面设置的顶层设计实体名称相同。
3,编写设计文件接下来开始在文件中绘制原理图,这里首先完成与门的添加,点击左侧工具栏中的Symbol Tool按钮,打开Symbol选择框,选择primitives——>logic——>and2,点击OK后即可在原理图中添加一个2输入的与门了。
在同样通过Symbol Tool中的加入和primitives——>pin——>output加入输入和输出引脚,然后在原理图中把他们用Orthogonal Node Tool即导线连接起来,双击输入输出引脚,为他们设定好名字,pinA,pinB,pinC,就完成了原理图中的设计。
4,编译(分析综合)点击Processing——>Start——>Start Analysis & Synthesis,进行分析综合,就好像是对程序进行编译,等待片刻,如果没有错误,编译报告会输出出来。
FPGA轻松学习用QuartusII通过原理图完成与门电路设计打开QuartusII软件,程序主界面如下:1,新建一个工程点击File——>New Project Wizard,打开创建新工程向导,这里你将完成工程的基本设定选项。
1,Project name and directory——工程的名称与目录2,Name of the top-level design entity——顶层设计实体的名称3,Project files and libraries——项目文件与库4,Target device family and device——目标设备的族类5,EDA tool settings——EDA工具设定这里一般设定好工程名称和目录,顶层设计实体名称以及目标设备族类就可以了,其他的暂时直接使用默认项就可以了。
2,新建一个设计文件通过点击File——>New打开新建文件选择框,由于我们这里使用原理图描述实现的,则文件类型选择Design Files——>Block Diagram/Schematic File,就新建了一个原理图文件,将其保存起来,注意命名要跟前面设置的顶层设计实体名称相同。
3,编写设计文件接下来开始在文件中绘制原理图,这里首先完成与门的添加,点击左侧工具栏中的Symbol Tool按钮,打开Symbol选择框,选择primitives——>logic——>and2,点击OK后即可在原理图中添加一个2输入的与门了。
在同样通过Symbol Tool中的加入和primitives——>pin——>output加入输入和输出引脚,然后在原理图中把他们用Orthogonal Node Tool即导线连接起来,双击输入输出引脚,为他们设定好名字,pinA,pinB,pinC,就完成了原理图中的设计。
4,编译(分析综合)点击Processing——>Start——>Start Analysis & Synthesis,进行分析综合,就好像是对程序进行编译,等待片刻,如果没有错误,编译报告会输出出来。
1-5. 8位数码扫描显示电路设计《示例程序和实验指导课件位置》:\EDA_VHDL_1C3\chapter5\Ep1c3_52_SCAN\ 工程:SCAN_LED(1) 实验目的:学习硬件扫描显示电路的设计。
(2) 实验原理:图5-20所示的是8位数码扫描显示电路,其中每个数码管的8个段:h、g、f、e、d、c、b、a(h是小数点)都分别连在一起,8个数码管分别由8个选通信号k1、k2、…k8来选择。
被选通的数码管显示数据,其余关闭。
如在某一时刻,k3为高电平,其余选通信号为低电平,这时仅k3对应的数码管显示来自段信号端的数据,而其它7个数码管呈现关闭状态。
根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得8个选通信号k1、k2、…k8分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。
例5-19是扫描显示的示例程序,其中clk是扫描时钟;SG为7段控制信号,由高位至低位分别接g、f、e、d、c、b、a 7个段;BT是位选控制信号,接图5-20中的8个选通信号:k1、k2、…k8 。
程序中CNT8是一个3位计数器,作扫描计数信号,由进程P2生成;进程P3是7段译码查表输出程序,与例5-18相同;进程P1是对8个数码管选通的扫描程序,例如当CNT8等于"001" 时,K2对应的数码管被选通,同时,A被赋值3,再由进程P3译码输出"1001111",显示在数码管上即为“3”;当CNT8扫变时,将能在8个数码管上显示数据:13579BDF 。
图5-20 8位数码扫描显示电路【例5-19】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SCAN_LED ISPORT ( CLK : IN STD_LOGIC;SG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); --段控制信号输出BT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );--位控制信号输出END;ARCHITECTURE one OF SCAN_LED ISSIGNAL CNT8 : STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL A : INTEGER RANGE 0 TO 15;BEGINP1:PROCESS( CNT8 )BEGINCASE CNT8 ISWHEN "000" => BT <= "00000001" ; A <= 1 ;WHEN "001" => BT <= "00000010" ; A <= 3 ;WHEN "010" => BT <= "00000100" ; A <= 5 ;WHEN "011" => BT <= "00001000" ; A <= 7 ;WHEN "100" => BT <= "00010000" ; A <= 9 ;WHEN "101" => BT <= "00100000" ; A <= 11 ;WHEN "110" => BT <= "01000000" ; A <= 13 ;WHEN "111" => BT <= "10000000" ; A <= 15 ;WHEN OTHERS => NULL ;END CASE ;END PROCESS P1;P2:PROCESS(CLK)BEGINIF CLK'EVENT AND CLK = '1' THEN CNT8 <= CNT8 + 1;END IF;END PROCESS P2 ;P3:PROCESS( A ) –-译码电路BEGINCASE A ISWHEN 0 => SG <= "0111111"; WHEN 1 => SG <= "0000110";WHEN 2 => SG <= "1011011"; WHEN 3 => SG <= "1001111";WHEN 4 => SG <= "1100110"; WHEN 5 => SG <= "1101101";WHEN 6 => SG <= "1111101"; WHEN 7 => SG <= "0000111";WHEN 8 => SG <= "1111111"; WHEN 9 => SG <= "1101111";WHEN 10 => SG <= "1110111"; WHEN 11 => SG <= "1111100";WHEN 12 => SG <= "0111001"; WHEN 13 => SG <= "1011110";WHEN 14 => SG <= "1111001"; WHEN 15 => SG <= "1110001";WHEN OTHERS => NULL ;END CASE ;END PROCESS P3;END;(3) 实验内容1:说明例5-19中各语句的含义,以及该例的整体功能。
实验注意事项1.做实验前,先连接好下载线,然后才能接上电源。
2.做完实验后,先拨掉实验箱上的电源,然后才能拨下载线。
实验一:简单逻辑门实验目的:掌握Quartus使用及基于原理框图进行FPGA开发的基本流程实验要求:掌握Quartus使用及基于原理框图进行FPGA开发的基本流程,注意设备及人身安全,严禁带电插拔JTAG下载线,防止损坏设备所需器材:FPGA教学实验系统,带并口的普通计算机实验介绍:本实验是在FPGA教学实验系统上实现简单的逻辑门,例如2输入的与门、与非门、或门、异或门等,对应部分的电路原理图如图1所示。
当K0(K1)按键断开时,FPGA引脚175(173)的输入为低电平,对应发光二极管D2(D3)熄灭,当K0(K1)按键按下时,FPGA引脚175(173)的输入为高电平,对应发光二极管D2(D3)发光。
FPGA引脚175、173在本实验中可用作输入引脚。
FPGA引脚64、65、66、73分别接有发光二极管(LED)DR0~DR3,在实验中可用作输出引脚,当引脚输出高电平时,对应的LED被驱动发光。
这些输出引脚可用于实现2个输入的不同逻辑功能。
图1 部分按键与LED的原理图实验步骤:1. 为工程建立工作目录为了方便工程涉及到的文件的管理,以后的每一个工程,都需要为其建立专门的工作目录,目录路径中不要包含有非英文或数字的字符(例如不要包含空格或中文字符等)。
请利用系统自带的“我的电脑”或“资源管理器”建立目录。
在此假设在E:\work目录下建立名为mylogic_sch的工程工作目录,其目录路径为E:\work\mylogic_sch,本实验所涉及的文件都需要放置在该目录当中。
2. 运行Quartus II程序方法1(通过开始菜单):开始->程序(P)->Altera->Quartus II 7.2->Quartus II 7.2 (32-Bit)方法2(桌面快捷方式):双击桌面的快捷方式图标打开Quartus II后,其界面如图2所示。
图2 Quartus II集成环境3. 建立工程在Quartus II上进行FPGA的开发是针对工程进行的,所有的设计任务都应当建立对应的工程。
运行菜单命令File->New Project Wizard,打开新建工程向导,分别如图3~图8所示。
完成后,即可在Quartus II中建立起对应的工程。
图3 新建工程向导介绍图4 工作目录、工程名、顶层实体名图 5 添加文件 图6 选定器件图7 第三方工具设置 图 8 信息汇总 在图4所示的对话框中,我们将工作目录(working directory )设定为E:\work\mylogic_sch ,将工程名(name of this project )设定为mylogic_sch ,将顶层实体名(top-level design entity )设定为mylogic_sch 。
顶层实体名最好和工程名一致,如不一致,应根据实际情况修改。
在图7中,我们需要根据实际情况选中EP2C20Q240C8芯片,该芯片为Cyclone II 系列的芯片之一,引脚为240个。
因此,可以先在Family 中选定Cyclone II 系列,然后在Pin count 中选定引脚为240,通过这些过滤条件,可以快速找到EP2C20Q240C8。
在其他图中的设置,不需要更改,直接点击Next 即可。
4. 编辑原理图设计文件运行菜单命令File->New ,或点击工具栏上的按钮,打开新建文件对话框,如图9所示。
在其中选择Block Diagram/Schematic File ,并点击OK 按钮。
Quartus 将打开一个新建原理图文件的编辑窗口,如图10所示。
图9 新建文件对话框图10 新建原理图文件编辑窗口在编辑窗口空白的地方双击,即可打开符号选择窗口,Quartus为我们准备了众多不同类别的元件符号供我们调用,这当中包含基本的逻辑门、74系列数字芯片功能符号和LPM可参数化定制符号等,如图11所示,我们在此分4次调进二输入的与门and2、与非门nand2、或门or2、异或门xor,并调进2个输入引脚input和4个输出引脚output,如图12所示。
图11 符号选择窗口图12 添加进设计窗口的元件双击输入输出引脚上的名字(例如左上角的引脚中的pin_name),可以更改引脚名,如图13所示。
我们在此依次将各个引脚名更改为k0、k1、dr0、dr1、dr2、dr3,如图14所示。
图13 更改引脚名图14 完成更改引脚名把鼠标光标放在引脚或元件符号的连接端上时,光标会变成十字形状示,此时按下鼠标左键不放,可进行连线,如图15所,当移动到另一端点时,松开左键,即完成连线,如图16所示。
按图17完成所有的连线,并以mylogic_sch为文件名(会自动添加.bdf的扩展名)保存文件,如图18所示,在其中默认选择上了Add file to current project选项,将会添加进当前工程当中。
图15 开始连线图16 完成连线图17 完成所有的连线图18 保存文件5. 分析设计分析设计这个步骤不是必需的,但是通过分析设计,可以对设计文件进行错误检查,并给出相应的提示、警告、错误等信息,检查过后,还可以提取出整个工程的结构层次、端口列表等信息,方便进行引脚锁定。
如果直接对工程进行完整的编译,将会耗费比较多的时间,并且修改锁定引脚后,还是得完整编译一次。
运行菜单命令Processing->Start->Start Analysis & Elaboration,对设计进行分析,分析完成后,弹出一完成提示对话框,如图19所示。
点击确定后,可查看自动打开的编译报告,如图20所示。
图19 分析完成提示图20 分析完成后的编译报告6. 功能仿真运行菜单命令File->New,或点击工具栏上的按钮,打开新建文件对话框,选择Other Files标签页下的Vector Waveform File文件类型,如图21所示,然后点击OK按钮。
Quartus将打开一个新建波形文件的编辑窗口,如图22所示。
图21 新建文件对话框图22 波形编辑窗口在Name对应的这一栏下面空白的地方双击鼠标左键,可以打开向波形编辑窗口插入节点或总线的对话框,如图23所示。
点击Node Finder按钮,打开并使用节点查找器来查找添加节点,在Filter这一栏中,选择Pins:all,然后再点击List按钮,即可列出所有的引脚,如图24所示。
图23 插入节点或总线图24 节点查找器在节点查找器中,查找出来的符合匹配条件的节点列在左边的Nodes Found 栏中,选择待添加的节点,然后点击中间的>按钮,即可把其添加到右边的Selected Nodes栏中作为选中节点,如果要把左边所有节点都添加到右边作为选中节点,则只需要点击中间的>>按钮即可。
相反的,<按钮和<<按钮则是把右边的Selected Nodes栏中的选中节点去掉。
我们在此把所有的引脚节点都添加到右边作为选中节点,如图25所示。
然后点击OK按钮,返回到节点查找器中,如图26所示。
图25 添加所有引脚节点图26 选择了节点的插入节点对话框在选择了节点的插入节点对话框中,点击OK按钮,即可返回到波形编辑窗口,并将选中的节点添加到编辑窗口中。
如图27所示。
图27 添加了节点的波形编辑窗口我们在仿真时,只需要设置输入的波形,输出的波形由仿真得到。
设置输入波形时,在输入信号上用鼠标左键框选一个区段,如图28所示,然后点击右边的相应值的按钮即可进行设置,在此,我们把这段选中的区域设为高电平1,则相应点击左边的按钮。
两个输入信号,共有4种电平情况,因此我们如图29所示设置仿真输入波形,在设置时,我们可以利用左边的功能按钮,对波形编辑窗口进行放大或缩小。
图28 选择待设置的信号区段图29 仿真输入波形编辑好输入波形文件后,即可进行保存,在此以mylogic_sch为文件名(会自动添加.vwf的扩展名)保存文件,如图30所示,在其中默认选择上了Add file to current project选项,将会添加进当前工程当中。
图30 保存波形文件运行菜单命令Processing->Simulator Tool,打开仿真器窗口,在Simulation mode中选择Functional类型,如图31所示。
然后点击右边的Generate Functional Simulation Netlist按钮,生成功能仿真所需的网表文件,如无错误,完成后将弹出一如图32所示的提示成功生成功能仿真网表的对话框,点击上面的确定按钮将其关闭。
然后点击下面的Start按钮,即可开始仿真,仿真结束后,将弹出如图33所示的提示成功仿真的对话框,点击上面的确定按钮将其关闭。
在仿真器窗口中点击下面的Report按钮,可以打开查看功能仿真的结果,如图34所示,仔细检查各输出信号的波形是否与期望的一致,如无错误,可将其关闭。
图31 仿真器窗口图32 成功生成功能仿真网表图33 成功仿真图34 功能仿真结果7. 修改工程设置工程设置包含有很多不同的方面,其默认值或自动分配值在不同的工程中并不一定能满足我们的期望,当和我们的期望值不一致时,就需要进行修改。
建立工程过后,一般需要对工程的某些设置进行修改,使其满足我们期望的要求。
修改过后,才进行完整的编译。
(1)锁定引脚锁定引脚是将设计当中的输入输出等端口(例如前面例子当中的k0、dr0)和FPGA实际引脚(175引脚、64引脚)锁定对应起来,最终编译实现过后,在FPGA锁定的引脚上实现对应端口的功能。
如果是在已经做好的FPGA电路板上进行FPGA程序设计,锁定引脚是必需进行的一项工程设置。
运行菜单命令Assignments->Pins,可打开Pin Planner窗口进行引脚锁定设置,如图35所示。
图35 Pin Planner窗口在每个端口对应的Location栏中双击,即可打开下拉列表进行引脚选择,选择完之后点击其他地方即可进行确定,如图36所示。
图36 选定引脚根据图1所示的实际情况给每个端口锁定引脚,全部设置好后如图37所示。
设置好后,可以关闭Pin Planner窗口。
图37 全部锁定引脚(2)修改器件与引脚选项运行菜单命令Assignments->Device,可打开工程设置窗口器件属性页,如图38所示。
图38 工程设置窗口器件属性页点击其中的Device and Pin Options按钮,可打开器件与引脚选项窗口,默认打开的是General标签页,如图39所示,在其中可以进行一些全局的器件与引脚选项设定。