嵌入式设计技术的工程方法续1典型外设课件_第1页
嵌入式设计技术的工程方法续1典型外设课件_第2页
嵌入式设计技术的工程方法续1典型外设课件_第3页
嵌入式设计技术的工程方法续1典型外设课件_第4页
嵌入式设计技术的工程方法续1典型外设课件_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

1、PIO Core 常用于:配置成输出方式,控制 LED;配置成输入方式,从开关或键盘采集数据;配置成输入方式,检测外部事件,申请一个中断;配置成双向方式,控制LCD显示设备;配置并且与(FPGA)片外逻辑器件通信。LCDAvalon 交 换 结 构Nios II存储器PIO(输出)LEDPIO(输入)沿捕获复位请求逻辑irqPIO(双向)外部事件 牛牛文库文档分享PIO Core 常用于:LCDAvalonNios II存PIO Core的寄存器地址偏移寄存器名R/Wn-12100数据寄存器读操作R 读取PIO输入端口数据写操作W 将数据写到PIO输出端口1方向寄存器R/W 每个I/O端口的方

2、向控制,0输入,1输出2中断屏蔽寄存器R/W 每个输入端口的IRQ使能,0禁止,1允许3沿捕获寄存器R/W 检测每个输入端口的沿信息根据PIO配置情况,该寄存器可能不存在,此时的读操作返回不确定值,写无效。写操作,将该寄存器清零。 牛牛文库文档分享PIO Core的寄存器地址偏移寄存器名R/Wn-1210数据(data)寄存器数据寄存器的读写硬件逻辑是独立的。虽然只有一个偏移地址,但读写操作是针对两个独立寄存器进行的。即:读取数据寄存器时,不会返回先前写入的值。读取数据寄存器将返回输入端口的值。如果PIO配置成只输出方式,读操作将返回不确定值。写数据寄存器意味着将数据送往输出端口。如果PIO配

3、置成只输入方式,写操作无效。如果PIO配置成双向模式,仅送往方向寄存器为1(输出)对应的输出端口。 牛牛文库文档分享数据(data)寄存器数据寄存器的读写硬件逻辑是独立的。虽然方向(direction)寄存器仅当PIO配置成双向模式时,该寄存器才存在。其它模式下,读操作返回不确定值,写无效。在双向模式下,方向寄存器控制每个双向I/O端口的数据方向,该寄存器第n位为1时,对应的I/O端口用作输出;该寄存器第n位为0时,对应的I/O端口用作输入。系统复位时,方向寄存器清零,I/O端口均为输入。如果I/O端口被连接到FPGA器件引脚上,将呈现高阻状态。 牛牛文库文档分享方向(direction)寄存

4、器仅当PIO配置成双向模式时,中断屏蔽(interruptmask)寄存器该寄存器只有在硬件配置为输入模式且“Generate IRQ”时才存在。当该寄存器的第n位置1时,允许对应输入端口中断;置0时,禁止对应输入端口中断。复位后,该寄存器清零,禁止所有输入端口的中断。每个PIO Core只有一个中断请求IRQ信号,主外设可以读data寄存器或edgecapture寄存器,进一步判断产生中断的输入端口。 牛牛文库文档分享中断屏蔽(interruptmask)寄存器该寄存器只有在硬沿捕获(edgecapture)寄存器当硬件配置有边沿捕获功能时,该寄存器才存在。当检测到输入端口上的边沿事件(上升

5、沿、下降沿或二者兼有,配置时确定)时,该寄存器的对应位置 1。对该寄存器的写操作,意味着清全零。 牛牛文库文档分享沿捕获(edgecapture)寄存器当硬件配置有边沿捕获功PIO的中断操作当硬件配置为电平触发中断,只要输入端口出现高电平并且中断使能(即data和interruptmask对应位均为1) ,就申请一个中断。当硬件配置为沿触发中断,只要 edgecapture 和interruptmask 对应位均为1 ,就申请一个中断。PIO的IRQ一直保持有效,直到被响应后,主设备发出禁止中断的操作: interruptmask相应位清零或对edgecapture写操作。主设备的中断服务程序

6、应进一步判断中断源。 牛牛文库文档分享PIO的中断操作当硬件配置为电平触发中断,只要输入端口出现高SOPC Builder 中 PIO Core 配置选项Basic Settings标签设定PIO的端口数量(位宽)132位设定I/O端口的方向,有四种选择: I/O端口方向设置 描 述 双向(三态)端口每个PIO位共用一个设备引脚来驱动和捕获数据。每个引脚的方向由direction寄存器的对应位控制。可选择输入时是否产生中断。 仅为输入端口所有PIO端口仅用作输入,可选是否产生中断。 仅为输出端口所有PIO端口仅用作输出,不能产生中断。 输入和输出端口输入、输出数据线独立,相当于同时生成“仅为输

7、入端口” + “仅为输出端口”。 牛牛文库文档分享SOPC Builder 中 PIO Core 配置选项BaPIO配置成输入输出且支持中断数据输入输出中断屏蔽边沿捕获32路输入32路输出地址数据控制IRQAvalon从端口信号数据输入输出方向控制32路地址数据控制Avalon从端口信号PIO配置成双向端口,不支持中断 牛牛文库文档分享PIO配置成输入输出且支持中断数据输入输出中断屏蔽边沿捕获3Input Options 标签仅当配置中有输入端口时,此标签可用。在此标签中可选择设定边沿事件类型: 上升沿、下降沿、上升沿或下降沿在此标签中还可选择设定是否支持中断:电平型只要输入为高电平且中断使能

8、,则产生 IRQ。 若希望低电平时中断,则应在输入端加“非门”。边沿型只要edgecapture不为零且中断使能,则产生 IRQ。 牛牛文库文档分享Input Options 标签仅当配置中有输入端口时,此软件编程PIO Core提供头文件 altera_avalon_pio_regs.h这个文件中定义了PIO Core的寄存器映射并提供硬件设备访问宏定义。例如:读数据寄存器button=IORD_ALTERA_AVALON_PIO_DATA ( LED_PIO_BASE ) ;例如:写数据寄存器IOWR_ALTERA_AVALON_PIO_DATA ( LED_PIO_BASE,DATA )

9、 ; 牛牛文库文档分享软件编程PIO Core提供头文件 altera_avalo4.2 通用异步收发器(UART)波特率除数接收寄存器状态寄存器发送寄存器控制寄存器数据包结束符移位寄存器移位寄存器时钟UART CLK电平转换RXDCTSTXDRTSRS-232接口地址数据IRQ包结束数据有效数据就绪Avalon从端口信号实现SOPC系统与外部器件之间的符号流通信。UART核实现了RS-232协议。用户可配置选择波特率、校验位、停止位、数据位以及RTS/CTS控制信号。Avalon主外设通过读/写寄存器,与UART核通讯。 牛牛文库文档分享4.2 通用异步收发器(UART)波特率除数接收寄存器

10、状态RS-232接口UART内核实现RS-232协议的异步发送和接收,通过TXD发送串行数据,通过RXD接收串行数据。由于大部分FPGA器件的I/O引脚为TTL或CMOS电平,不符合RS-232电平要求,因此需要一个电平转换电路。 牛牛文库文档分享RS-232接口UART内核实现RS-232协议的异步发送和发送逻辑UART的发送器由7/8/9位发送数据寄存器、7/8/9位发送移位寄存器以及相应控制逻辑组成。Avalon主设备将数据写入发送数据寄存器,发送逻辑自动将发送数据寄存器内容装入发送移位寄存器,并从最低位开始通过TXD移出。发送逻辑根据RS-232规范,在串行数据流中自动插入正确的起始位

11、、校验位和停止位。发送数据寄存器和发送移位寄存器提供双重缓冲。主设备可在前一个字符正在移出时,将新数据写入发送数据寄存器。主设备可通过状态寄存器中的发送准备好(TRDY)位、发送移位寄存器空(TMT)位和发送溢出错误(TOE)位监视发送器的工作。 牛牛文库文档分享发送逻辑UART的发送器由7/8/9位发送数据寄存器、7/8接收逻辑UART的接收器由7/8/9位接收移位寄存器、 7/8/9位接收数据寄存器以及相应控制逻辑组成。接收逻辑将RXD上的串行数据移入接收移位寄存器,每当新字符完全接收后,自动装入接收数据寄存器,并准备接收下一个字符。主设备从接收数据寄存器中获取接收到的字符。并可通过状态寄

12、存器中接收准备好(RRDY)、接收溢出错误(ROE)、间断检测(BRK)、校验错误(PE)和帧错误(FE)监视接收器的工作。接收逻辑根据RS-232规范,在串行数据流中自动检测正确的起始位、校验位和停止位。并检查接收中的4种异常,设置状态寄存器中的对应位。 牛牛文库文档分享接收逻辑UART的接收器由7/8/9位接收移位寄存器、 7/ 波特率生成 通过对Avalon总线时钟的分频,可获得UART内核的波特率时钟。分频值的来源:系统生成时的指定的一个常量值(系统采用固定波特率,硬件中不包含波特率除数寄存器)波特率除数寄存器中的16位值(系统可通过软件改变波特率) 牛牛文库文档分享 波特率生成 通过

13、对Avalon总线时钟的分频,可获得UAR UART内核的寄存器偏移量寄存器R/W寄存器位描述151312111098765432100接收数据R接收数据1发送数据W发送数据2状态R/WEOPCTSDCTSERRDYTRDYTMTTOEROEBRKFEPE3控制R/WIEOPICTSIDCTSTRBKIEIRRDYITRDYITMTITOEIROEIBRKIFEIPE4除数R/W波特率除数(分频值)5数据包结束符R/W数据包结束符值 保留位是否存在,取决于硬件配置写0到状态寄存器将清零DCTS、E、TOE、ROE、BRK、FE、PE是否存在,取决于硬件配置 牛牛文库文档分享 UART内核的寄存

14、器偏移量寄存器R/W寄存器位描述15 接收数据寄存器(Rxdata)新字符从RXD输入,经接收移位寄存器完全接收后,保存到Rxdata中,并将状态寄存器的RRDY位置1。当主设备从Rxdata中取走数据后,状态奇存器的RRDY位清零。若Rxdata中的数据没有被主设备取走(RRDY=1),又有新字符输入,则发生溢出错误,状态寄存器的ROE位置1。新数据覆盖Rxdata中的原内容。 牛牛文库文档分享 接收数据寄存器(Rxdata)新字符从RXD输入,经接收 发送数据寄存器(Txdata)主设备把需要发送的字符写入Txdata,此时,状态寄存器的TRDY=0;当Txdata内容被传送到发送移位寄存

15、器时,TRDY=1。只有TRDY=1时,才能写下一个需要发送的字符到Txdata。除数寄存器(Divisor)如果配置时选择使用Divisor,则可写入分频值,动态调整波特率。这一点通常用于波特率自适应设备。 牛牛文库文档分享 发送数据寄存器(Txdata)主设备把需要发送的字符写入 状态寄存器(Status)位名称读 / 清除说明0PER/C奇偶校验错。当按照奇偶校验约定,接收校验结果与接收的校验位不一致时,PE=1。写 0 到 STATUS,清零。1FER/C当接收器没有检测到正确的停止位时,发生帧错误,FE=1。写 0 到 STATUS,清零。2BRKR/C3ROER/C4TOER/C5

16、TMTR6TRDYR7RRDYR8ER/C10DCTSR/C11CTSR12EOPR 牛牛文库文档分享 状态寄存器(Status)位名称读 / 清除说明0PER 位名称读 / 清除说明0PER/C1FER/C2BRKR/C当RXD端连续保持逻辑0的时间大于一个完整字符的时间,接收逻辑检测到间断,BRK置1。通过写0才能清除。3ROER/C当存在Rxdata中的数据未被读取,又收到新数据传送到Rxdata时,发生接收溢出错误,ROE置1,且Rxdata被新数据覆盖。通过写0才可清除。4TOER/C5TMTR6TRDYR7RRDYR8ER/C10DCTSR/C11CTSR12EOPR 牛牛文库文档

17、分享 位名称读 / 清除说明0PER/C1FER/C2BRKR 位名称读 / 清除说明0PER/C1FER/C2BRKR/C3ROER/C4TOER/C当存在Txdata中的数据未被传送到发送移位寄存器时,又向Txdata写数据,发生发送溢出错误,TOE置1。通过写0才能清除。5TMTR指示发送移位寄存器的当前状态。0表示正在移位发送;1表示发送移位寄存器空。主设备可查此位移确定发送是否完成。6TRDYR7RRDYR8ER/C10DCTSR/C11CTSR12EOPR 牛牛文库文档分享 位名称读 / 清除说明0PER/C1FER/C2BRKR 位名称读 / 清除说明0PER/C1FER/C2B

18、RKR/C3ROER/C4TOER/C5TMTR6TRDYR指示发送数据寄存器的状态。1表示发送数据寄存器空,主设备可以写入新字符;0表示发送数据寄存器满。7RRDYR指示接收数据寄存器的状态。1表示接收数据寄存器中有数据,可以被主设备读取;0表示接收数据寄存器空。主设备读Rxdata时,RRDY清零。8ER/C10DCTSR/C11CTSR12EOPR 牛牛文库文档分享 位名称读 / 清除说明0PER/C1FER/C2BRKR 位名称读 / 清除说明0PER/C1FER/C2BRKR/C3ROER/C4TOER/C5TMTR6TRDYR7RRDYR8ER/C它是PE、FE、BRK、ROE、T

19、OE的逻辑或,与控制寄存器的IE一起,提供了一种允许/禁止所有错误中断的简便方法。10DCTSR/C略11CTSR略12EOPR略 牛牛文库文档分享 位名称读 / 清除说明0PER/C1FER/C2BRKR 控制寄存器(Control)控制寄存器的每一位用于使能状态寄存器中对应位的中断。即:当状态位及其对应的中断使能位都为1时,UART内核产生一个中断。例如:状态寄存器中的PE=1时,表示发生了校验错误。若控制寄存器中对应的IPE位为1,则可发出一个中断,请求主设备的服务;若IPE=0,则禁止校验错时的中断请求。 牛牛文库文档分享 控制寄存器(Control)控制寄存器的每一位用于使能状 SO

20、PC Builder 中UART内核的配置 牛牛文库文档分享 SOPC Builder 中UART内核的配置www.n 提供RS-232协议标准波特率设置选择,也是复位时的默认值。 牛牛文库文档分享 提供RS-232协议标准波特率设置选择,也是复位时的默认 牛牛文库文档分享 牛牛文库文档分享 牛牛文库文档分享 牛牛文库文档分享 设置停止位 牛牛文库文档分享 设置停止位 牛牛文库文档分享 流控制选择(硬件握手)与DMA配合的流数据控制选择(含有包结束符寄存器) 牛牛文库文档分享 流控制选择(硬件握手)与DMA配合的流数据控制选择(含有 UART的软件编程寄存器级访问altera_avalon_u

21、art_regs.h定义内核的寄存器映射并提供硬件设备访问宏定义。查询发送流程读状态TRDY=1?ny写数据到Txdata查询接收流程读状态RRDY=1?ny读Txdata到变量 牛牛文库文档分享 UART的软件编程寄存器级访问altera_avalon 通过HAL API和ANSI C标准库访问UARTaltera_avalon_uart .haltera_avalon_uart .c实现了HAL系统库的UART内核设备驱动程序。快速驱动程序(默认):中断方式小型驱动程序:查询方式 牛牛文库文档分享 通过HAL API和ANSI C标准库访问UARTalt 使用ANSI C标准库函数发送和接

22、收字符/ 识别字符t和v的简单程序# include # include int main ( ) char * msg=“detected the character t . n” ; FILE * fp ; char prompt = 0 ; fp = fopen ( “/dev/uart1” , “r +” ) ; if ( fp ) while ( prompt != v ) prompt = getc ( fp ) ; if ( prompt = t / 如接收到 t 则打印 fwrite ( msg , strlen ( msg ) , 1 , fp ) ; fprintf ( f

23、p , “closeing the UART file . n ” ; fclose ( fp ) ; return 0 ; 牛牛文库文档分享 使用ANSI C标准库函数发送和接收字符/ 识别字符 4.3 定时器(TIMER)状态控制周期L周期H当前值L当前值H控制逻辑32位计数器地址、数据IRQ复位请求(看门狗)输出脉冲 牛牛文库文档分享 4.3 定时器(TIMER)状态控制周期L周期H当前值L 用户可见6个16位寄存器的Avalon接口和一个脉冲输出端主设备写控制寄存器 进行启、停操作;选择计数模式:单次减1计数或连续减1计数; 使能/禁止Timer中断。主设备写周期寄存器,可改变Time

24、r的定时周期主设备可从状态寄存器获得Timer的当前状态主设备可分两步随时读取内部计数器的当前值 先写当前值寄存器,发起请求,控制逻辑将计数器的当前值复制到 当前值寄存器;再读当前值寄存器,即可获得。内部计数器是减1计数,当减到0时,从周期寄存器中重新载入初值。当计数器减到0时: 若允许中断,则产生中断请求; 可选择是否输出一个脉冲; 若配置选择看门狗功能,则产生复位请求,引起系统复位。Timer 的功能特点: 牛牛文库文档分享 用户可见6个16位寄存器的Avalon接口和一个脉 状态寄存器位名称操作描述0TOR/C当内部计数器减到0时,TO位被置1,并保持,直到主设备写0清除。1RUNR当内

25、部计数器运行时,为1,否则为0。控制寄存器位名称操作描述0ITOR/W1:允许中断;0:禁止1CONTR/W决定减到0时的操作。1:计数器连续运行,直到用STOP停止;0:减到0时停止。2STARTW写1后,启动计数器减1运行。3STOPW写1后,停止计数器减1运行。 牛牛文库文档分享 状态寄存器位名称操作描述0TOR/C当内部计数器减到0时 中断控制与操作只要内部计数器减到0(状态寄存器TO=1)且控制寄存器的ITO=1(允许中断),则定时器内核产生一个IRQ。用户可用下列方式应答IRQ。清除状态寄存器的TO位,等待下一次超时事件发生;将控制寄存器ITO位清零,禁止中断。 牛牛文库文档分享

26、中断控制与操作只要内部计数器减到0(状态寄存器TO=1) SOPC Builder 中 Timer 的配置设置周期寄存器初值。若以s、ms、s为单位,系统生成时计算填写;若选clocks,则需填写初值。 牛牛文库文档分享 SOPC Builder 中 Timer 的配置设置周期 全特性方式,可生成一个具有可变周期、可启停的全特性定时器。看门狗(watchdog),便于软件运行“飞出”时的系统复位。 牛牛文库文档分享 全特性方式,可生成一个具有可变周期、可启停的全特性定时器 选择时,硬件包括周期寄存器,主设备可通过写周期寄存器改变计数周期。选择时,硬件包括当前值寄存器,主设备可随时读取计数器的当

27、前值。 牛牛文库文档分享 选择时,硬件包括周期寄存器,主设备可通过写周期寄存器改变 选择时,内核包括Avalon从端口信号resetrequest。只要计数器减到0时,产生复位请求,复位整个系统。通过写START可重启。 牛牛文库文档分享 选择时,内核包括Avalon从端口信号resetrequ 定时器(Timer)的软件编程Altera公司在HAL系统库中提供了两种定时器设备模型:系统时钟定时器和时间戳定时器。用户尽量使用 HAL API 访问定时器,而不是访问定时器的寄存器。altera_avalon_timer_regs.h 定义内核的寄存器映射,并提供硬件设备访问宏定义。altera_

28、avalon_timer.haltera_avalon_timer_sc.caltera_avalon_timer_ts.caltera_avalon_timer_vars.cHAL库中的定时器设备驱动程序。 牛牛文库文档分享 定时器(Timer)的软件编程Altera公司在HAL系 4.4 SDRAM控制器Avalon 从 接 口 PC100SDRAM 引 脚控制逻辑SDRAM控制器时钟调整时钟源地址数据控制等待请求读数据有效Avalon 从 信 号外部SDRAM芯片clkckeaddrbacscasraswedqdqm 牛牛文库文档分享 4.4 SDRAM控制器AvalonSDRAM控制器时 基本性能可连接一个或多个SDRAM芯片的接口。自动完成刷新操作、行列管理。用户可像使用SRAM一样,使用SDRAM。可配置成不同的数据宽度、存储容量。提供多片SDRAM结构下的独立片选信号。支持读、写传输的等待。主设备读连续地址时,第一个数据在等待时间的初始周期后返回,后续读操作在每个时钟周期产生新数据。由于定时刷新操作,不保证每个时钟周期返回数据。可选择与其它片外三态器件共享地址、数据、字节

温馨提示

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

评论

0/150

提交评论