电机驱动实验设计指导书.docx

上传人:b****7 文档编号:10538118 上传时间:2023-02-21 格式:DOCX 页数:82 大小:3.33MB
下载 相关 举报
电机驱动实验设计指导书.docx_第1页
第1页 / 共82页
电机驱动实验设计指导书.docx_第2页
第2页 / 共82页
电机驱动实验设计指导书.docx_第3页
第3页 / 共82页
电机驱动实验设计指导书.docx_第4页
第4页 / 共82页
电机驱动实验设计指导书.docx_第5页
第5页 / 共82页
点击查看更多>>
下载资源
资源描述

电机驱动实验设计指导书.docx

《电机驱动实验设计指导书.docx》由会员分享,可在线阅读,更多相关《电机驱动实验设计指导书.docx(82页珍藏版)》请在冰豆网上搜索。

电机驱动实验设计指导书.docx

电机驱动实验设计指导书

实验一LED灯实验

(一)、实验目的

1、了解AlteraFPGA的器件系列及CycloneII芯片的资源;

2、了解FPGA设计的相关概念和原理;

3、学会使用QuartusII及NiosII软件实现简单的LED灯控制实验,掌握FPGA的基本设计流程。

(二)、实验设备

1、硬件:

PC机、DE1开发板、USB-Bluster。

2、软件:

Windows98/2000/XP系统、QuartusII6.0、NiosIIEDS6.0。

(三)、实验原理与内容

1、PLD简介

可编程逻辑器件(ProgrammableLogicDevice,PLD)是20世纪70年代发展起来的一种新型大规模集成电路,是目前数字电路系统设计的主要硬件基础。

它由集成电路制造厂制成的一种半制定逻辑器件,由用户借助计算机和编程设备自行对它进行编程,使之具有预定的逻辑功能,成为符合用户要求的ASIC芯片。

与ASIC相比,PLD具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和小批量的产品生产中。

早期的可编程逻辑器件只有可编程只读存储器(PROM),紫外线可擦除子都存储器(EPROM)和电可擦除子都存储器(EEPROM)三种。

由于结构限制,它们只能完成简单的数字逻辑;其后,出现了一类结构上稍复杂的可编程芯片,即PLD,它能够完成各种数字逻辑功能,这一阶段的产品主要有可编程陈列逻辑(PAL)和通用阵列逻辑(GAL)。

这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路;为弥补这一缺陷,20世纪80年代中期,Altera和Xilinx公司分别推出了复杂可编程逻辑器件(ComplexProgrammableLogicDevice,CPLD)和现场可编程门阵列(FiledProgrammableGateArray,FPGA),它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。

不同的厂家叫法不尽相同,Xilinx公司把基于查找表技术、SRAM工艺、要挂外设配置EEPROM的PLD称为FPGA,把基于乘积项技术、Flash工艺的PLD称为CPLD;Altera公司把自己的PLD产品,如MAX系列(乘积项技术、EEPROM工艺)、FLEX系列(查找表技术、SRAM工艺)都称为CPLD。

由于FLEX系列也是SRAM工艺、基于查找表技术、要挂外设配置EEPROM,用法和Xilinx公司的FPGA一样,所以,很多人把Altera公司的FELX系列产品也称为FPGA。

FPGA的结构基于查找表技术。

查找表(LookingUpTable,LUT)本质上就是一个RAM,当用户通过原理图或HDL代码描述了一个逻辑电路后,FPGA软件会自动计算逻辑电路所有结果,并把结果事先写入RAM。

这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。

FPGA的编程单元基于SRAM结构,从理论上讲,具有无限次重复编程的能力。

现在最新的FPGA,具有很高的逻辑密度、很丰富的特性核很高的性能。

目前,市场上有三种FPGA编程技术:

SRAM、反熔丝、Flash。

其中,由于速度快且具有可重复编程能力,基于SRAM技术工艺的FPGA是迄今为止应用范围最广的架构。

2、实验内容

本实验主要有两部分内容。

第一部分要求学生能实现最基本的FPGA设计流程,通过挂载PIO核,实现拨码开关的信号输出,以及LEDG的控制信号输出。

即实现通过四个拨码开关控制4个LEDG灯的亮灭设计。

拨码开关功能与LEDG控制对应关系如表1-1所示:

Led

表1-1拨码开关功能与LEDG控制对应关系表

Key

LEDG[0]

LEDG[1]

LEDG[2]

LEDG[3]

SW[0]

1/亮,0/灭

*

*

*

SW[1]

*

1/亮,0/灭

*

*

SW[2]

*

*

1/亮,0/灭

*

SW[3]

*

*

*

1/亮,0/灭

第二部分要求学生能学会创建简单的逻辑模块,利用这些模块搭建出一个简单的系统逻辑,添加到工程,实现逻辑控制。

本实验可实现如下功能:

通过拨码开关SW[9..4],控制LEDR[9..0]的亮灭时间。

(四)、实验预习要求

1、了解FPGA的发展历程、工作原理、基本特点等;

2、了解DE1开发板的相关资源;

3、熟悉QuartusII以及NiosII开发软件的使用。

(五)、实验步骤

1、硬件实现

1)、建立工程并创建顶层文件

a)、打开QuartusII6.0软件,建立一个工程File->NewProjectWizard(如图1-1所示),则会看到如图1-2所示的界面。

图1-1

图1-2

b)、点击Next,会看到工程路径和工程名称设置界面,特别注意路径和名称不能包含汉字和空格,空格可以用下划线代替,例如可设置工程路径为E:

\LED,工程名为display,如图1-3所示。

图1-3

如图1-4所示,如果该文件夹不存在,软件会提示你是否创建该文件夹,点击“是”创建即可。

图1-4

c)、FPGA器件设置

根据DE1的FPGA芯片型号进行选择,该FPGA型号为EP2C20F484C7,如图1-5所示。

图1-5

d)、完成工程

下面可以不用设置,直接点击Next即可,如图1-6,图1-7所示。

图1-6

图1-7

检查红色方框内的设置是否与你的设想一致,若不一致,返回点击back修改,若一致,则点击Finish,完成工程建立,工程界面如图1-8所示。

图1-8

e)、创建顶层文件

点击File->New,新建顶层BDF文件,如图1-9所示。

图1-9

点击OK后出现图1-10所示的界面。

图1-10

2)、创建NIOS系统模块

a)、运行SOPCBuilder(如图1-11),出现图1-12所示界面,将Nios系统命名为led。

图1-11

图1-12

b)、添加boarddescription

i)、单击file,出现如图1-13所示界面,选择newboarddescription...选项。

图1-13

ii)、在netlist选项卡中,设置devicefamil为cycloneII,如图1-14所示。

图1-14

iii)、在flashmemory选项卡中,选择TypeofMemory为EPCSSerialFlashMemory类型,单击newflashmemory和newhardwareimage将unamed改称epcs4,如图1-15所示。

图1-15

iv)、在files选项卡中将BoardDescriptionName改称为DE1,如图1-16所示。

图1-16

c)、IP模块添加

根据本实验要实现的功能,IP模块包含CPU、SDRAM控制器、二个PIO(SW[3..0]、LEDG[3..0])、SystemIDPeripheral等。

i)、CPU

图1-17

在左边列表中找到要添加的器件,然后按下左下角的“Add...”,就会看到NIOS的设置界面。

软核的类型系统给我们提供了三种类型,NiosII/e占用资源最少600-800LEs,功能也最简单,速度最慢;NiosII/s占资源比前者多一些,功能也多一些,速度也快一些,NiosII/f占资源最多,功能也最多,速度也最快,选择的时候根据你的需求和你芯片资源来决定,在这里我们选择NiosII/s。

另外,HardwareMultiply选择None。

JTAGDebugModule项将调试级别设为Level1即可,该级别支持软件的断点调试。

图1-18

点击“Finish”完成。

将鼠标放在cpu_0上,点击右键,单击“Rename”将CPU名字修改为“cpu”。

图1-19

ii)、SDRAM控制器

由实验开始可知DE1开发板上的SDRAM的数据总线16位,地址总线12位,故可设置如图1-20所示。

图1-20

用修改CPU模块名的方法将SDRAM模块名sdram_0修改为sdram。

iii)、JTAGUART和SystemID

这些项不需要什么特别的设置,直接找到添加就可以。

图1-21

iv)、PIO控制器

SW设置为输入,四位,如图1-22所示。

图1-22

同理LEDR设置为输出,四位。

v)、添加epcscontroller

图1-23

vi)、最终个IP模块配置,如图1-24所示。

图1-24

vii)、自动设置地址与中断,如图1-25所示。

图1-25

viii)、在BoardSetting选项卡上按图1-26所示,将TargetDevice设置为"AssigninQuartusIIProject"选项。

图1-26

ix)、在NiosIImore"cpu"setting选项卡上可按图1-27设定。

图1-27

x)、点击界面最下面的“Generate”生成NiosII系统,如图1-28所示。

图1-28

成功生成NiosII系统。

3)、设计顶层文件

a)、将生成的NiosII核加入到工程中。

具体步骤如下:

i)、在BDF窗口任意空白处双击,就会出现Symbol对话框;

ii)、在Symbol对话框中单击Project打开工程目录,就会出现“led”名称,选中后右侧就会出现系统的符号表示;

iii)、单击OK,关闭对话框,“led”就附着在鼠标的指针上;

iv)、在BDF窗口任意处单击一下,“led”符号就会出现在BDF窗口上,Nios就加到了工程中,NiosII系统模块如图1-29所示。

图1-29

其它器件添加步骤也一样,如果添加自己创建的器件,就点击Project,如果是系统自带的器件,那么就点击Project线面的进行查找和添加。

b)、添加锁相环

本系统时钟频率采用50Mhz,SDRAM和System使用同一个PLL输出时钟,可以保证SystemClock和SDRAMClock的相对抖动比较小。

外部晶振的时钟送入PLL,然后由PLL产生两个同频的时钟一个供给NiosII系统使用,另一个供给SDRAM使用。

SDRAM必须通过锁相环加一个时钟输入,时钟输入一定要加上时钟相位偏移,不同厂商生产SDRAM相位偏移角度的大小不同,要根据实际来设置。

SDRAM经常会出现以下的错误:

verifying02000000(0%)

verifyfailedbetweenaddressox20000000(SDRAM的地址)and0x2003987

leavingtargetpaused

产生上面错误的原因,主要有以下几方面:

SDRAM分配管脚错误,检查管脚是否分配上或分配错误;SDRAM的时序不对,有时候不正确的锁存器相移就会导致SDRAM不能正常工作;QuartusII默认将所有没有使用的IO口接地,这种可能导致元器件工作不正常,最好将不用的IO口设置为三态;SDRAM的数据总线的管脚是双向IO口,设置错误可能导致错误发生。

双击顶层文件任意空白处,出现Symbol界面,点击"MegaWizardPlug-InManager"选项,出现图1-30所示界面。

图1-30

点击Next,出现如图1-31所示界面。

图1-31

下面对PLL进行参数设置,具体过程如下:

i)、在ParameterSetting->General/Modes中设置devicefamily、speedgrade、frequency,设置结果如图1-32所示。

图1-32

ii)、打开ParameterSetting->Scan/Lock将红框内的所有选中符号去除,如图1-33所示。

图1-33

iii)、打开OutputClocks->Clk0,它是为CPU提供输入时钟,设置如图1-34所示。

图1-34

iv)、打开OutputClocks->Clk1,它是为SDRAM提供输入时钟,设置如图1-35所示,相移暂设为-50deg。

图1-35

v)、打开OutputClocks->Clk2,它是为计数器提供输入时钟,设置如图1-36所示。

图1-36

c)、添加引脚

IO接口有三种类型的引脚,分别为bidir,input,output,即双向、输入和输出引脚。

SDRAM的数据总线输出为双向的,添加引脚时要特别注意,否则会有校验错误。

引脚的名称缺省为pin_name,为了便于理解和记忆,我们必须对其进行重命名。

命名规则有两条:

A、对于总线型的引脚,引脚名称之后要标示出总线位数,如addr_a[12..0],在引脚名称之后加上方括号,然后写上最高位和最低位,用“..”分隔。

B、对于普通引脚,双击引脚的“pin_name”,编辑变为高亮状态的文字。

图1-37

d)、添加计数器

同添加锁相环类似。

双击空白处,进入Symbol界面,选择lpm_counter,如图1-38所示。

图1-38

单击ok按图1-39所示设置。

图1-39

点击Next,按图1-40所示设置。

图1-40

最后单击Finish,完成设置。

计数器生成后,将其添加到顶层文件中,系统逻辑主要部分如图1-41所示。

图1-41

e)、分配引脚

分配引脚有很多种方法。

i)、逐个分配

右键单击引脚,选择Locate->LocateinAssignmentEditor(如图1-42所示),然后进行逐一设置。

图1-42

ii)、使用管脚分配文件

工程中以qsf、csv、txt为后缀的文件都可作为管脚配置文件。

因为我们使用的是DE1的开发板,它的外设资源与FPGA芯片的管脚已经固定,所以我们只需导入它就可以,但是前提是在顶层原理图中各个输入输出的名称要和这个文件里的名称一致。

首先,单击Assigments->ImportAssigments,如图1-43所示。

图1-43

然后选择DE1_pin_assignments.qsf文件的路径,点击“OK”导入即可,必须检查各个输入输出的名称和此文件里的名称是否一致,否则发生不可预知错误。

图1-44

右键点击管脚,选择Locate->LocateinAssignmentEditor,查看管脚的分配情况,图1-45为CLOCK_50的管脚分配情况。

图1-45

最好在导入成功后,每个管脚都检查一遍。

f)、保存

单击“保存”即可,名称使用默认,不用修改,如图1-46所示。

 

图1-46

g)、编译前设置

如图1-47所示,右键单击工程名display,单击setting选项,就会看到图1-48所示的界面。

图1-47图1-48

设置的类型有General、Files等,其中Device项最重要。

在Device中,用户可以设置和器件相关的选项,FPGA的芯片通常在建立项目的时候就选好了,所以通常不用修改,注意在编译之前必须对未使用的引脚做设置,将未使用的引脚设置成Asinputstri_stated,若不作此设置设计可能无法在开发板上运行,设置如图1-49所示。

图1-49

ALTERA-nCEO是FPGA配置用的芯片,可以不用的,一般情况下在Dual->PurposePins中设置ALTERA-nCEO为UseasregularI/O,如图1-50所示。

图1-50

Configuration标签用来确定目标器件变成配置方式,这里有两种编程方式可供选择主动串行方式(ActiveSerial)和被动串行方式(PassiveSerial)。

对于CycloneII系列器件,ALTERA还提供了针对AS方式的配置器件EPCS系列,如EPCS1、EPCS4等,他们都是串行配置的。

DE1开发板的配置器件的类型为EPCS4,硬件配置可如图1-51所示配置。

图1-51

h)、编译

如图1-52所示,点击编译图标,对工程进行编译。

经过等待,编译通过,结果如图1-53所示。

图1-52

图1-53

i)、下载

运行如图1-52所示的下载图标,将程序下载到FPGA中去。

图1-54

首先确定HardwareSetup中USBBlaster,是否存在,其次将Program/Configure勾选上(如图1-54所示),否则会出现"Cann'tstartdeviceconfigurationbecausenoprogrammingoptionshavebeenselectedfordevicechain"错误。

点击“Start”进行下载。

2、软件实现

打开NiosIDE6.0,首先要指定工作空间的路径,其实就是我们在硬件实现中所建立工程的路径E:

\LED,如图1-55所示。

图1-55

点击OK,运行File->New->Project来新建一个工程,如图1-56和图1-57所示。

图1-56

图1-57

继续点击Next,出现图1-58所示界面。

图中最上面的红框是对工程名称进行修改,例如命名为“hello_world”;在中间的红框处是目标硬件文件选择,点击Browse,找到上面生成Nios系统的路径E:

\LED\,打开以*.ptf为后缀的文件即可;在最下面的红框处选择“Helloworld”工程模板。

图1-58

点击Finish,完成工程的创建。

图1-59

若有其他要求,则对工程属性的有关项进行相应的修改,点击OK完成设置,按“CTRL+B”或Project->BuildAll进行编译,经漫长的等待,看到如图1-60所示的界面。

图1-60

编译最主要的作用是生成了system.h文件,该文件根据是我们构建的Nios系统产生的,将系统中用到的各模块的地址、中断号等属性进行了总结,是我们以后编程的基础,例如图1-61就是PIO模块的属性。

图1-61

System.h位于hello_world_syslib[led]->Debug->system_description中,另外,一定要注意一旦NiosII软核发生变化,就必须重新编译,重新生成system.h文件。

本实验的程序主要包括两个模块,一个是对PIO的读,一个是对PIO的写。

可以运用系统提供的API进行操作。

IORD(PIO_KEY_BASE,0):

该函数表示对PIO的读,返回PIO读键值。

IOWR(PIO_LED_BASE,0,DATA):

该函数表示对PIO的写,把DATA赋给PIO。

这样准备工作已经完成,我们就可以编写程序了,编完程序后还要进行一次编译,注意在编译之前一定不要忘了对程序进行保存,否则编译的还是没修改之前的程序。

(六)、思考

1、FPGA设计流程中需要注意哪些问题?

2、尝试直接通过逻辑控制LED灯,思考用硬件控制与软件的区别。

(七)、扩展实验

1、使用PIO核实现流水灯控制。

2、使用系统逻辑实现多位LED灯控制。

实验二IP核定制实验

(一)、实验目的

1、进一步熟悉并掌握FPGA的基本设计流程;

2、学会基于Avalon总线的IP核的定制。

(二)、实验设备

1、硬件:

PC机、DE1开发板、USB-Bluster。

2、软件:

WindowsXP系统、QuartusII6.0、NiosIIEDS6.0

(三)、实验原理与内容

1、Avalon总线简要介绍

NIOSII是一个建立在FPGA上的嵌入式软核处理器,除了可以根据需要任意添加已经提供的外设外,用户还可以通过定制用户逻辑外设和定制用户指令来实现各种应用要求。

SOPCBuilder提供了一个元件编辑器,通过这个元件编辑器我们可以将自己写的逻辑封装成一个SOPCBuilder元件。

本实验中将要定制的PWM核是基于Avalon总线中的AvalonMemoryMappedInterface(Avalon-MM),而Avalon总线还有其它类型的设备,如AvalonStreamingInterface(Avalon-ST)、AvalonMemoryMappedTristateInterface等等。

Avalon-MM接口是内存映射系统下用于主从设备之间的读写的接口。

Avalon-MM接口组件包括微处理器、存储器、UART和定时器等,这些接口组件具有主从设备,并通过系统互连结构(systeminterconnectfabric)连接。

Avalon-MM接口可以描述从一个支持简单、固定周期的读写传输的SRAM到一个支持复杂、突发传输的流接口的各种各样的组件。

图2-1显示了一个典型的系统,高亮部分显示了Avalon-MM从接口到系统互连结构的连接。

图2-1基于Avalon总线的典型系统连接图

图2-2是一个AvalonMM总线的一个外设结构图。

图2-2AvalonMM总线的外设结构图

本节将以PWM实验为例,介绍一下定制基于Avalon总线的用户外设的过程。

2、实验内容

本实验实现两个IP核的使用与控制。

其中,一个为PWM核,需要自己定制,而另一个为timer核,是SOPCBuilder中自带的IP核,使用时通过中断实现。

本实验分为两部分。

第一部分学习添加自定义IP核的使用与控制,要求学生设计PWMIP核的DHL模块,并将其生成新的组件,用于添加到NiosII系统。

最后,通过三个拨码开关控制PWM核的输出,实现1位LED灯的周期性亮灭的控制,其中一个拨码开关用于控制PWM输出的使能,另两个拨码开关用于设置4个不同的时间周期;第二部分学习NiosII中中断的使用,要求学生通过定时器的中断来实现1位LED灯的周期性亮灭的控制。

这里同样使用3个拨码开关实现控制信号的输入,其作用与第一部分中三个拨码开关的作用相同。

PWM核控制实验程序设计流程图如图2-3所示,timer核控制实验程序设计流程图如图2-4所示。

图2-3PWM核控制实验程序设计流程图图2-4timer核控制实验流程序设计程图

(四)、实验预习要求

1、了解Avalon总线规范;

2、熟悉并掌握实验一中FPGA设计的基本流程;

3、掌握Verilog或VHDL硬件描述语言。

(五)、实验步骤

1、打开实验一所生成的工程文件;

2、设计PWMIP核的DHL模块(本实验采用Verilog硬件描述语言编写)。

a)、新建Verilog文件,点击File->New,出现如图2-6所示界面,选择VerilogHFLFile选项;

图2-5新建Verilog文件

(1)

图2-6新建Verilog文件

(2)

b)、使用Verilog硬件描述语言设计PWM核的DHL模块;

c)、模块设计完成后,保存(本实验中将其命名为pwm.v)。

3、构建PWMIP核

a)、进入SOPCBuilder,双击CreateNewComponent选项或点击File菜单中的NewComponent…选项(如图2-7和图2-8所示)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1