当前位置:首页 > 新闻资讯 > FPGA之家动态 >

医用FPGA开发教程-基于Spartan6和VHDL- 课件 第1-9讲-FPGA基础概念 - OLED显示实验

时间:2026-11-07      来源:FPGA_UCY 关于我们 0

FPGA的设计流程就是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程。原理图和HDL(Hardwaredescriptionlanguage,硬件描述语言)是两种最常用的数字硬件电路描述方法。其中,运用HDL设计方法具有更好的移植性、通用性以及利于模块划分的特点,在工作学习中被广泛使用。典型FPGA的开发流程一般先通过系统功能设计,然后通过VHDL/VerilogHDL硬件描述语言进行RTL级HDL设计,然后进行RTL级仿真、综合、门级仿真、布局布线和时序仿真等步骤,最后生成下载配置文件,下载到FPGA中进行板级调试。《医用FPGA开发实用教程》-配套讲义166.HDL语言HDL(HardwareDescripTIonLanguage)语言又称为硬件描述语言,是一种用文本的方式把硬件电路描述出来的语言。目前最主要的硬件描述语言是VHDL和VerilogHDL。VHDL发展的较早,语法严格,而VerilogHDL是在C语言的基础上发展起来的一种硬件描述语言,语法较自由。我们在阅读HDL程序的时候,在脑子里应该能反映出一个完整的硬件电路结构。也就是说,我们在编写HDL语言之前,就要对需要实现的电路有清晰的概念。所以HDL语言只是一个描述我们头脑中具体电路的工具,掌握FPGA的根本不是语言而是逻辑电路的设计。《医用FPGA开发实用教程》-配套讲义17谢谢观看!《医用FPGA开发实用教程》-配套讲义18第2讲:FPGA开发平台和工具——卓越工程师培养系列——19目录XC6SLX16芯片介绍FPGA高级开发系统可以开展的部分实验FPGA开发工具的安装与配置《医用FPGA开发实用教程》-配套讲义201.XC6SLX16芯片介绍《医用FPGA开发实用教程》-配套讲义XC6SLX16是赛灵思(Xilinx)Spartan-6系列的一种低成本、低功耗的FPGA芯片,芯片引脚总数为324个,可用I/O数量为232个,内部提供了14579个逻辑单元,136KB的分布式RAM,576KB的内嵌式块RAM,最大工作频率可达1080MHz。212.FPGA高级开发系统《医用FPGA开发实用教程》-配套讲义FPGA高级开发系统上的核心板通过两个连接器将148个可用I/O引出给平台上的外设使用,剩下的用于核心板上的外扩SRAM、用户配置FLASH及JTAG下载等。22FPGA高级开发系统可以开展的实验非常丰富,这里仅列出具有代表性的17个实验。3.可以开展的部分实验《医用FPGA开发实用教程》-配套讲义序号实验名称序号实验名称1分频器实验10SHT20温湿度测量实验2流水灯实验11DAC实验3独立按键去抖实验12ADC实验4七段数码管显示实验13体温测量与显示实验5矩阵键盘扫描实验14呼吸监测与显示实验6OLED显示实验15心电监测与显示实验7串口通信实验16血氧监测与显示实验8读写外部EEPROM实验17血压测量与显示实验9读写外部FLASH实验234.FPGA开发工具的安装与配置《医用FPGA开发实用教程》-配套讲义ISE14.7的安装与配置Synplify的安装与配置下载器驱动的安装24谢谢观看!《医用FPGA开发实用教程》-配套讲义25第3讲:VHDL语法基础——卓越工程师培养系列——26目录VHDL基本结构数据类型常量与变量信号元件常用语句运算符《医用FPGA开发实用教程》-配套讲义271.VHDL基本结构《医用FPGA开发实用教程》-配套讲义1.1库声明

库(library)的建立和使用有利于设计重用和代码共享,同时可以使代码结构更加清晰,在VHDL设计中有3个常用的库:ieee库、std库和work库。在使用一个库之前,首先需要对库进行声明,经过声明后,在设计中就可以调用库中的代码。库语句关键词library指明所使用的库名,use语句指明库中的程序包,声明格式如下:library库名;use库名.程序包名.all;use库名.程序包名.项目名;281.VHDL基本结构《医用FPGA开发实用教程》-配套讲义1.2实体

实体(entity)用来描述电路的所有输入/输出引脚,是VHDL程序经封装后对外的一个通信界面。实体名可以自由命名,用来表示被设计电路芯片的名称,但是必须与VHDL程序的程序文件一致,语法结构如下:entity实体名isport(

引脚名:in信号类型;

引脚名:inout信号类型;

引脚名:out信号类型);endentity;291.VHDL基本结构《医用FPGA开发实用教程》-配套讲义1.3结构体

结构体(architecture)实现了具体的功能,描述了该基本设计单元的行为、元件和内部的连接关系,其中,“声明语句”用来说明和定义数据对象、数据类型、元件声明等。“声明语句”并非是必需的,但“功能描述语句”必须在结构体中给出相应的电路功能描述。语法结构如下:architecturertlof结构体名is

声明语句begin

功能描述语句endrtl;301.VHDL基本结构《医用FPGA开发实用教程》-配套讲义1.4VHDL基本结构实例libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityledis

port(

led_o:outstd_logic_vector(3downto0)--led输出,共4位

);endentity;architecturertlofledisbegin

led_oH>L>032integer是32位的整数,取值范围从-2^31到2^31,通过关键字range…to可以定义一个integer类型变量或信号的取值范围。2.数据类型2.2integer《医用FPGA开发实用教程》-配套讲义character是字符型数据,可以是单个或者一串ASCII字符。2.3character33

常量的定义和设置主要是为了使程序更容易阅读和修改,在程序中,常量是一个恒定不变的值,一旦作了数据类型和赋值定义后,在程序中就不能再改变,具有全局意义。常量定义的格式如下:3.常量与变量3.1常量

《医用FPGA开发实用教程》-配套讲义constant常量名:数据类型:=表达式;

例如某实验中定义了常量LED0_ON的数据类型为std_logic_vector,它等于0001。constantLED0_ON:std_logic_vector(3downto0):="0001";34

在VHDL语法规则中,变量是一个局部量,只能在进程和子程序中使用。变量不能将信息带出对它作出定义的当前结构。变量的赋值是一种理想化的数据传输,是立即发生的,不存在任何延时行为。变量的主要作用是在进程中作为临时的数据存储单元。变量定义的格式如下:3.常量与变量3.2变量

《医用FPGA开发实用教程》-配套讲义variable变量名:数据类型:=初始值;

例如以下两句表述分别定义了变量a的取值范围为0~15的整数型变量;变量b为标准位类型的变量,初始值为1。variablea:integerrange0to15;variableb:std_logic:='1';35信号(signal)是指电路内部硬件连接的抽象,同时可以作为设计实体中并行语句模块间的信息交流通道,在综合过程中是硬件电路的线路。信号是全局的,可以定义在结构体,实体,程序包中。信号定义的格式如下:

4.信号《医用FPGA开发实用教程》-配套讲义signal信号名:数据类型:=初始值;

信号初始值的设置不是必需的,初始值的设置仅在VHDL的行为仿真中有效,例如定义1Hz时钟信号和计数信号,并且计数信号的初始值为00。signals_clk_1hz:std_logic;--1Hz时钟信号signals_cnt

:std_logic_vector(1downto0):="00";--计数信号,2位36

一个元件(component)是一段结构完整的程序文件(包括库声明、实体和结构体),如果将这些程序声明为component,就可以被其他电路调用(实例化),从而使程序具有层次化结构。调用一个元件之前,要在结构体的声明部分对该元件进行声明,元件声明语法格式如下:5.元件5.1元件声明《医用FPGA开发实用教程》-配套讲义component元件名isport(

引脚名表);endcomponent;37元件例化就是将预先设计好的设计实体定义为一个元件后,利用映射语句将此元件与调用该元件的设计实体中指定端口或信号相关联(用“=>”实现),从而进行层次化设计。元件的例化是在结构体的功能描述部分实现的,语法格式如下:5.元件5.2元件例化《医用FPGA开发实用教程》-配套讲义例化名:元件名

portmap(

信号关联式1,

信号关联式2,

……

信号关联式n);386.常用语句6.1直接赋值语句《医用FPGA开发实用教程》-配套讲义

直接赋值语句常用于信号的赋值,语法格式如下:信号名

逻辑电路nendcase;437.运算符7.1赋值运算符《医用FPGA开发实用教程》-配套讲义

赋值运算符用来给信号、变量和常量赋值,描述如下表所示:赋值运算符描述给矢量中的某些位赋值,或对某些位之外的其他位(常用others表示)赋值447.运算符7.2逻辑运算符《医用FPGA开发实用教程》-配套讲义

逻辑运算符用来执行逻辑运算操作。操作数必须是bit、std_logic或std_ulogic类型的数据(或是这些数据类型的扩展,即bit_vector、std_logic_vector或std_ulogic_vector)。VHDL的逻辑运算符如表所示,它们的优先级是从上到下递减的。逻辑运算符描述NOT取反AND与OR或NAND与非NOR或非XOR异或XNOR同或457.运算符7.3算术运算符《医用FPGA开发实用教程》-配套讲义算术运算符描述+加,A+B-减,A-B*乘,A*B/除,A/B**指数运算,ABMOD取模REM取余ABS取绝对值467.运算符7.4关系运算符《医用FPGA开发实用教程》-配套讲义

关系运算符用来对两个操作数进行比较运算,关系运算符左右两边操作数的数据类型必须相同。VHDL有6种关系运算符,如表所示。逻辑运算符描述=等于/=不等于<小于>大于<=小于等于>=大于等于477.运算符7.5并置运算符《医用FPGA开发实用教程》-配套讲义

并置运算符用于位的拼接,其操作数可以是支持逻辑运算的任何数据类型。并置运算符有两种:&和(,,,)并置运算符描述&c


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

上一篇:FPGA基础知识及其工作原理

下一篇:

✖

用户登陆

    未注册用户登录后会自动为您创建账号

✖

提交留言