《学习入门.ppt》由会员分享,可在线阅读,更多相关《学习入门.ppt(55页珍藏版)》请在三一办公上搜索。
1、EDK学习入门,2010.7.21大学生创新活动基地,1.绪论,1.1 嵌入式系统的定义嵌入式系统是以嵌入式计算机为技术核心,面向用户、面向产品、面向应用,软硬件可裁剪的,适用于对功能、可靠性、成本、体积、功耗等综合性能有严格要求的专用计算机系统。随着移动多媒体、数字娱乐、手机、终端汽车电子等领域的迅速发展,手机、便携式多媒体设备、家庭娱乐用音视频产品的嵌入式解决方案越来越流行。可以说,未来十年内,嵌入式系统将继续保持高增长态势。,1.2 嵌入式系统的特点高可靠性,在恶劣的环境或突然断电的情况下,系统仍然能够正常工作;实时性,许多嵌入式应用有此需求,要求嵌入式操作系统具有实时处理能力,以及嵌入
2、式硬件结构具有很强的实时反应能力;软硬件一体化,嵌入式系统和具有应用有机地结合在一起,它的升级换代也与具体产品同步进化;软件固化,嵌入式系统的软件代码一般都固化在只读存储器或闪存中,也就是说软件要求固态化存储,而不是存储在磁盘等载体中。,2.Xilinx的XPS和SDK开发环境介绍2.1XPS的图形界面,2.2 工程信息域窗口工程信息域窗口包含3个子窗口:工程子窗口(Project)、应用子窗口(Applications)、IP核目录子窗口(IP Catalog)。(1)工程子窗口设计包含的文件信息设计属性信息参考文件信息(2)应用子窗口应用属性编译器属性源代码库文件,2.2 工程信息域窗口(
3、续)(3)IP核目录子窗口,2.3 编辑窗口编辑窗口主要是System Assembly View文件窗口,其包含:Bus Interface窗口Ports窗口Addresses窗口,2.4 日志窗口Output:显示所有的信息Warnings:显示警告信息Errors:显示错误信息,2.4.2MHS文件结构(1)参数版本定义:PARAMENT VERSION=2.1.0(2)外部端口定义:PORT sys_clk_pin=dcm_clk_s,DIR=I,SIGIS=DCMCLK这行标明工程的顶层有一个信号,名称是sys_clk_pin,它连接到工程内部网络表信号dcm_clk_s,是一个输入
4、信号(DIR=I),并且连接到DCM模块(SIGIS=DCMCLK)(3)子模块定义:BEGIN microblazePARAMETER INSTANCE=microblaze_0PARAMETER HW_VER=4.00.aPORT CLK=sys_clk_sPORT DBG_CAPTURE=DBG_CAPTURE_sEND首先定义子模块使用的IP核名称(microblaze),然后例化名称(microblaze_0)、版本(4.00.a)以及其他特性参数。然后是定义子模块的接口信号。,2.4.3MSS文件结构(1)参数版本定义:PARAMENT VERSION=2.2.0(2)操作系统定义
5、:BEGIN OS PARAMETER OS_NAME=standalone PARAMETER OS_VER=2.00.a PARAMETER PROC_INSTANCE=microblaze_0 PARAMETER STDIN=RS232_DTE PARAMETER STDOUT=RS232_DTEEND(SIGIS=DCMCLK)(3)驱动程序定义:BEGIN DRIVER PARAMETER DRIVER_NAME=bram PARAMETER DRIVER_VER=1.00.a PARAMETER HW_INSTANCE=dlmb_cntlrEND,2.4.4UCF文件结构(1)指定
6、管脚类型和位置:Net sys_clk_pin LOC=c9;Net sys_clk_pin IOSTANDARD=LVCMOS33;Net sys_clk_pin PULLDOWN;第一行指定引脚在芯片上的位置;第二行将引脚的物理特性指定为LVMOS33(3.3V的LVCMOS规范),第三行指定引脚需要芯片内部上位。(2)指定时钟约束:TIMESPEC TS_sys_clk_pin=PERIOD sys_clk_pin 20000 ps;描述时钟管脚输入的时钟频率为50MHz。,2.4.5 CMD文件结构CMD文件基本内容如下:setMode-bscansetCable-p autoiden
7、tifyassignfile-p 1-file implementation/download.bitprogram-p 1Quit设置编程模式为边界扫描模式(setMode)设置编程电缆类型为自动检测(setCable)识别目标板上有几个可编程的器件(identify)指定编程使用的比特流文件(assignfile)编程器件选择(program)一般CMD文件修改的比较多的部分是assignfile和program两个命令中的1,这代表需要编程的器件是JTAG链上的第一个器件。,2.5 SDK图形界面,3 Microblaze处理器的总线介绍Microblaze处理器的总线主要有:OPB总线
8、,用于访问外设,包括存储器、GPIO等设备,使用范围广泛,多用于连接对速率要求较低的设备,如HDLC、10/100M以太网等,虽然也可以连接如DDR等快速外设,但效率并不高。LMB总线,专用于连接Microblaze与FPGA内部的BlockRAM,高速总线;Cache Link,专用于连接Microblaze与用做Cache的外部存储器,快速总线,一般用FSL总线实现。而在EDK10.1版本以后,用PLB总线代替了OPB总线。PLB效率远高于OPB,在设计时,需要较大吞吐量的外设(如DDR、GMAC等)都通过PLB连接。不同的总线有不同的控制端口,和自己独特的时序操作,使其应用于相应的场合。
9、,4 用XPS向导创建EDK的最小系统点击桌面上的Xilinx Platform Studio,系统会自动出现如下对话框:,点击OK后,系统会自动出现如下对话框:,此对话框是设置工程路径。设置完毕后会出现如下对话框:,点击NEXT,出现如下对话框:,在如下面两个选项里,第一项是选择Xilinx定制的开发板,第二项是选择用户自定制的开发板,在这里我们选择第一项,然后点击Next。并进行如下设置:在 Board Vendor(生产厂家)选项栏中选择:Xilinx 在 Board Name 选项栏中选择:Spartan-3E Starter Board 在 Board Revision(版本号)选项
10、栏中选择:C,点击Next,你将看到处理器选择对话框,默认设置,继续点击NEXT,将出现如下对话框:,点击Next,你将看到处理器选择对话框,默认设置,继续点击NEXT,将出现如下对话框:按照下面要求选择 设置:参考时钟频率:50 MHz 这是开发板上的外部时钟。这个时钟用来产生处理器和总线时钟。时钟频率的高低主要取决于FPGA或主板,因为一定的片上资源的可以对时钟进行分频或倍频。处理器时钟频率(Processor Clock Frequency):50 MHz 处理器总线时钟频率(Processor Bus Clock Frequency):50 MHz 调试接口(Debug Interfa
11、ce):On-chip H/W debug module 本地数据指令存储空间(Local Data and Instruction Memory):8 KB Cache 使能(Cache Enabled):unchecked,单击Next,选择外设,由于仅仅是最小系统,故只选择选择LEDs_8Bit(OPB_GPIO,no interrupt)来进行控制,选择RS232_DCE(115200 baud rate,no parity,no interrupt)作为串口运用超级终端进行调试。,之后设置添加外部设备(Add Internal Peripherals)对话框,这里不添加,故单击Nex
12、t。然后设置软件安装(Software Setup)对话框,选择Memory Test,不选择Peripheral SelfTest。点击Next,您将会看到设置内存测试应用对话框,默认设置即可,单击 Next 按钮您将看到建立系统(System Created)对话框,显示系统信息摘要,点击Generate,将会显示一个祝贺画面,指示工程已经成功创建。,单击结束(Finish)按钮成功的生成一个工程。你将会看到下一步对话框,选择Start Using Platform Studio,点击OK。将会出现一个系统总体图,图上有系统外围,总线以及系统间的连接。,至此,最小系统创建完毕。,下面讲解如
13、何在硬件上验证(以Test_memory工程为例)完成上述步骤后,打开UCF文件,如果是用户自定制的开发板,则需要编写ucf文件,对于Xilinx定制的开发板,其会根据前面的设置自行生成相应的ucf文件。在设置完UCF后,点击Hardware Generate Bitstream选项,生成硬件比特流。,硬件Bit文件生成后,然后就是软件开发的流程。如下图点击Software Generate Libraries and BSP,系统会自动生成整个系统的驱动程序。,在驱动程序生成后,然后对应用软件做编译,现在先讲解在XPS中进行编译。如下图,对于Test_memory工程,系统已经生成了可应用的
14、程序如下:,然后打开超级终端软件,准备开始调试软件,如下图所示。,命名并确定,然后设定串口的参数和开发板一致,如下图,点击确定,当软件编译完成后,要生成可以下载的download.bit文件,这个Bit流文件和前面system.bit文件是不同的,它包含硬件bit流文件和应用软件的bit流文件的信息。,这时超级终端会打印出如下的信息。,为硬件设计添加 IP实验 XPS 提供两种方法来添加到已存在的工程中。你可以用第一种方法,通过系统体视图页面来添加绝大部分附加IP并连接它们。第二种方法是手工编写MHS 文件。此方法需对 MHS 文件以及 IP 的结构有较深了解得。选择窗口左边的 IP目录标签,
15、点击 General Purpose IO上的加号查看在它下面的IP核,双击XPS General Purpose IO图标,添加实例到系统体视图。把添加的外围实例更名为data_out,通过在文件名上点击鼠标一次,就可以任意输入字符作为外围的新名称。点击 Bus Interface过滤器上的加号.在 Bus Connection竖线上点击一下,选择data_out的 SPLB中选择 mb_plb。,选择 Addresses 过滤器。你可以人为的分配基址,指定外设的地址空间大小,你还可以通过 XPS自动分配地址。点击Generate Addressest选择系统自动分配基址和外设的最高地址。在
16、data_out图标下,点击size图标,你可以将其更改为64K。,使用Ports过滤器来为data_out连接必要的端口。你首先确定实例的参数,然后连接外部引脚。双击data_out图标进入配置窗口,注意:外设可以分配给两个信道,但是由于我们只用到一个所以 Enable Channel 2不选。点击common GPIO Data Bus Width 一栏向下箭头,设置为8,然后点OK。其是将GPIO接口的数据设置为8位。,点击Channel1的前面两个参数向下按钮,分别设置Channel 1 is Bi-directional为 False,Channel 1 is input Only
17、为 True,如图4-11所示,点击 OK确认。这样是设置GPIO口为输入口;同样设置Channel 1 is Bi-directional为 False,Channel 1 is input Only 为False是设置GPIO口为输出口;设置Channel 1 is Bi-directional为True,Channel 1 is input Only 为False是设置GPIO口为输入输出双向口。,至此,添加系统自带的IP核已经介绍完毕,6 添加自定制IP实验1.点击 XPS中的 Hardware Create or Import Peripheral,打开向导 2.点击 Next 将开
18、始 Create and Import Peripheral Wizards 流程,3.在选择流程页面,选择 Create templates for a new peripheral,点击 Next,To an XPS project,已经自动选择好了,工程的路径也已经设置好了,默认设置就行。,4.点击 Next,在文件名一栏键入 lcd_ip,版本默认为 1.00.a,点击 Next。,5.在总线接口界面,选择 Peripheral Bus(OPB),点击 Next,继续在向导选择 select User Logic S/W Register support。选择一个可寻址 32位寄存器。
19、1.在 IPIF Services页面,选择 User Logic S/W Register Support,点击 Next。,2.在 User S/W Register 页面,选择“Disable posted write”,点击 Next,保持默认寄存器设置值。,3.拖动 IP Interconnect(IPIC)页面滚动条,里面显示基于用户当前选择的默认IPIC信号。,在(OPTIONAL)Peripheral Simulation Support页面,不要选择 Generate BFM simulation platform 一项,点击 Next 在(OPTIONAL)Peripher
20、al Implementation Options(外设实现选项)页面,只选择 Generate template driver files to help you to implement software interface,其它的都不选。,点击 Next,将会出现综合信息页面。点击 Finish 关闭向导 在 XPS中,点击 IP Catalog 图标,可以发现 lcd_ip 已经添加到 Project Repository(工程库)目录下。,添加名为 lcd的端口到 MPD文件,作为 LCD外设的控制信号。1.通过 Windows Explorer,在工程目录下浏览 pcores lc
21、d_ip_v1_00_a data。2.使用编辑器打开 lcd_ip_v2_1_0.mpd 文件。3.在 Ports部分,OPB_Clk前面添加如下 表达式:PORT lcd=“,DIR=O,VEC=0:6,4.保存文件并关闭文件,用文本编辑器打开 lcd_ip.vhd 和 user_logic.vhd文件,路径为 C:xupembeddedlabslab3pcoreslcd_ip_v1_00_ahdlvhdl。添加必要的声明和逻辑到lcd_ip.vhd 和 user_logic.vhd文件。1.浏览到 pcores lcd_ip_v1_00_ahdlvhdl 目录。2.选择 lcd_ip.v
22、hd 文件并用文本编辑器打开。3.在 USER ports added here token 下面添加 7位的 lcd,4.找到下一处-USER,添加端口声明,保存并关闭文件。,5.从 vhdl目录下打开 user_logic.vhd 文件,在用户端口区域添加 lcd。,6.在到下一次-USER,并为用户逻辑做内部信号声明。,7.找到 USER logic implementation 添加如下代码或者下面复制粘贴过去。,8.保存改动,并关闭 user_logic.vhd。接下来就可以把其当做系统自带的IP进行调用了,7 创建基本应用程序在软件开发之前,应在 Software Platform
23、 Settings下设置软件开发环境。选择 Software Software Platform Settings,选择 Software Platform 标签,检校下列参数。,选择 OS and Libraries 标签,确认 stdin 和 stdout选择 RS232_DCE.,microblaze_exceptions 和 enable_sw_intrusive_profiling 的 Current Value 一项选 false,其它的都按下图所示的设置。,在 Drivers(驱动)部分,检查确认系统中的各个外设的驱动。,在 Interrupt Handlers(中断管理)部分,
24、注意所有的外设都应该是没有中断,因为本设计中没有外设支持中断。点击 OK 保存设置,编程时可以通过View API Documentation 查看外设的C语言函数驱动。在 System Assembly View(系统体视图)中,右击 LEDs_8Bit外设,选择 Driver:gpio_v2_01_a View API Documentation,学习xgpio.h文件。在软件应用中必须进行如下操作,才能对 GPIO进行读/写:1)GPIO初始化 2)设置数据方向 3)读/写数据,XGpio_Initialize(XGpio*InstancePtr,Xuint16 DeviceId)Ins
25、tancePtr 是 Xgpio实例的指针。指针指向的地址必须通过调用者进行预先分配。以后通过 XGpio API操作必须由此指针构成。DeviceId 是XGpio 组件控制的器件的唯一识别号。通过识别号,可以在调用或升级应用时通过识别号将Xgpio类型实例调用到一个特定的器件。XGpio_SetDataDirection(XGpio*InstancePtr,unsigned Channel,Xuint32 DirectionMask)InstancePtr 是指向将要使用的 Xgpio实例的指针。Channel 是GPIO(1或 2)将要工作的信道。DirectionMask是离散信号输入
26、输出标志位。0表示输出,1表示输入。XGpio_DiscreteWrite(XGpio*InstancePtr,unsigned channel,Xuint32 data)InstancePtr.是指向将要使用的Xgpio实例的指针。Channel是 GPIO(1或 2)将要工作的信道。Data 写入离散寄存器中的数据,介绍一下led控制程序,8 系统的设计完善 对于一个完整的SOPC系统,在完成了软件部分的开发后,还应该将生成的包含.elf文件的SDK工程添加到XPS中,其添加操作过程如下:在Application下点击Add Software Application Project,会出现
27、一个对话框,对工程命名并设置路径,点击OK即可。,而后根据需要可以进行如下两种完善:如果是只是运用SOPC系统,则可生成软硬件比特流,下载到板子上进行验证设计,其操作如下:1)生成软硬件比特流:Device ConfigurationUpdate Bitstream;2)下载比特流:Device Configuration Download Bitstream。如果是要输出EDK设计到ISE中,则需进行如下操作:1)EDK工程默认都是作为顶层模块,在这里改成子模块,如果保持EDK工程为顶层模块,最后生成的子目录中将没有任何文件。2)打开ISE工程导航,为用户顶层FPGA设计创建或打开ISE工程。3)为用户ISE工程选择FPGA器件族、封装和速率等级,这些属性和嵌入式子模块中位ISE工程指定的属性相同。4)选择“Project”“Add Source”打开添加源的窗口。5)在“Add Exiting Sources”对话框中,为嵌入式子模块选择XMP格式的XPS工程文件。用户的XPS子模块将在工程面板中源的位置出现。6)选择XMP源并运行“View HDL Instantiation Template”来产生HDL模板样例,模板中的HDL部分可以复制到用户顶层HDL源文件中。,