PicoBlaze输入/输出端口

PicoBlaze微控制器支持最大256个输入口和256 个输出口,PicoBlaze与输入和输出有关的信号在“PicoBlaze微控制器接口信号”部分有详细说明,包括PORT_ID[7:0]、IN_PORT[7:0]、OUT_PORT[7:0]、READ_STROBE WRITE_STROBE。在时序要求苛刻的设计中, 对PORT_ID 和数据路径允许两个时钟周期, 对于READ_STROBE 和WRITE_STROBE 需要约束到一个时钟周期。为了提高性能,在允许的情况下可以插入流水寄存器。

PORT_ID:此信号作为输入或输出端口的标识或者说是地址。它的有效高电平持续两个时钟周期,这样做的目的是为了有足够的时间进行译码,有足够的时间与异步RAM 连接,还有,在双周期操作时,允许从同步RAM(例如,BRAM)中读数据。

INPUT 和OUTPUT 操作支持直接和间接寻址,端口地址由立即数指定或由寄存器指定。间接寻址方式适用于对BRAM、具有连续地址的外设、片内或片外存储器中的表格的访问。

扩展PicoBlaze 外设其实非常方便,唯一具有挑战性的地方在于,如何用最少的逻辑资源实现对PORT_ID 译码。表12-2 所示为一般的方法(取决于端口数)。

一、 INPUT 操作

输入操作将IN_PORT输入口的数据传送到由寄存器sX 指定的16 个数据寄存器中的任何一个,如图12-11所示,PORT_ID 由sY确定或者由一个8位的立即数确定,指定输入源。输入源由一个多路器选择,多路器的大小与输入源的通道数成正比,它直接影响PicoBlaze 的性能。

图12-11 输入操作和FPGA内部接口

图12-12中为输入指令时序图,图中显示PicoBlaze微控制器从由s7指定的端口读数据,数据被读入s0。当执行此指令时,寄存器s7 的内容出现在PORT_ID上,PORT_ID被FPGA内部逻辑译码,被请求的数据出现在IN_PORTREAD_STROBE 在输入指令的第二个时钟周期变高,尽管READ_STROBE 主要用于FIFO,以使FIFO 能够更新它的读指针。出现在IN_PORT的数据在第2 个上升沿被采样,表明INPUT指令执行完毕,之后,数据被采样进入s0。

图12-12 INPUT 指令的PORT 时序

从图12-12时序图可以看出,由于PORT_ID保持两个时钟周期有效,所以输入数据多路器可以被寄存,以保证性能,如图12-13所示。

图12-13 由多路器将多个输入变为一路输入

二、 OUTPUT 操作

输出操作将寄存器sX 的内容送到OUT_PORT,PORT_ID 由寄存器sY 确定或者由一个8位的立即数确定,指定输出口。WRITE_STROBE 表明OUT_PORT 数据有效,并且准备好被捕获。通常情况下,WRITE_STROBE 与PORT_ID 组合成时钟使能或者写使能供FPGA逻辑捕获输出数据。

图12-14 OUT_PORT与FPGA逻辑

图12-14是一个扩展输出端口的实例,图12-15为其时序图,PicoBlaze 要将s0的内容送到PORT_ID为65HEX 的端口,s0 的内容出现在OUT_PORT,端口地址65HEX 出现在PORT_ID,WRITE_STROBE 在指令周期的第二个时钟边沿变高,表明数据有效。

图12-15 OUT_PORT 指令的PORT 时序

对于8个或者少于8个的输出口,常用one-hot编码方式,如图12-16所示,因为它仅需要对PORT_ID的某一位进行译码,所以很大程度上减少了FPGA译码逻辑所需资源,同时也提高了性能。如果用来译码的PORT_ID位数为3或者小于3,则译码逻辑仅用一级逻辑即可实现,这时的性能最高。

图12-17所示为一个简单的输出程序,用one-hot编码定义4个输出口,同时定义了一个广播式的输出口,先向4个输出口输出4个不同的值,最后两条语句将所有4个口清零。

图12-16 简单的输出 图12-17 one-hot 编址输出例程

PicoBlaze输入/输出端口相关推荐

  1. PIC单片机入门_输入输出端口详解

    1.引言: PIC单片机引脚图: 在PIC16F87X 单片机中,28引脚型号的单片机有3 个I/O端口,分别是RA.RB和RC:40引脚型号单片机有5个 I/O端口,分别是RA.RB.RC.RD和R ...

  2. 运动控制卡输入/输出端口

    一.控制卡输出信号的输出与隔离 控制卡为数字电路,其上的芯片多为5V直流电源供电,与TTL电平兼容.而自动化系统中大多数输入/输出元件如:继电器.指示灯.电磁阀.触摸屏.传感器等,多为24V直流电源供 ...

  3. 嵌入式系统(五):GPIO(输入输出端口扩展器)接口

    文章目录 1. GPIO结构及特点: (1)GPIO功能模式 (i)GPIO复用功能(AFIO,Alternate function) (ii)GPIO数字输入模式 (iii)模拟输入模式 (iii) ...

  4. 设定pic单片机端口为输入_PIC单片机的输入输出端口

    在学习这个部门的时候,曾经碰到过一些题目.PIC单片机的引脚未几,大多都是复用引脚,例如AD.IO.比较器.外接晶振等等,所以在配置端口的时候,一定要知道每个功能怎样设置才能实现的,在这一小节中,我要 ...

  5. 【小趴菜STM32开发笔记】---- 01输入输出端口GPIO

    目录 1 GPIO概述 2 GPIO的特性 3 两个重要概念 3.1 端口(PORT): 3.2 引脚(PIN): 4 电路基本结构 4.1 端口寄存器组 4.2 输入驱动器 4.3 输出驱动器 4. ...

  6. LPC201X的PLL(锁相环|倍频器)设置,GPIO(通用输入输出端口)【三】

    1.PLL操作的寄存器 2.PLL频率的计算

  7. STM32 通用输入输出端口GPIO BRR、BSRR、ODR寄存器详解

    详细页面:http://alanzjl.sinaapp.com/2015/02/gpio_brr_bsrr_odr/ BRR.BSRR.ODR都是用来控制16位针脚的. 其中,BRR和ODR高16位都 ...

  8. PicoBlaze 设计实例

    PicoBlaze 设计实例 一. 设计要求 1. PICOBLAZE 嵌入式系统,包括1 个8 位的方波输出口,一个驱动两位7 段LED 的输出口,一个时钟输入和一个中断输入. 2. 在Sparta ...

  9. PicoBlaze 8 位微控制器

    PicoBlaze 8 位微控制器 PicoBlaze 是一个8 位的微控制器,非常适合于Spartan 系列及Virtex 系列FPGA.还可以用于CPLD,但是需要外部加SRAM 存储器以运行程序 ...

最新文章

  1. 11-Reliability, Availability, and Serviceability (RAS) Extensions
  2. windows mobile C# net3.5 如何捕捉Arrow的CheckBox的KeyDown事件?
  3. 关于h5py的使用及数据封装实例
  4. 使用 “vue-cropper“进行图片裁剪
  5. 如何更优雅的写出你的SQL语句
  6. 【JEECG技术文档】JEECG 组织机构导入V3.7
  7. VOC标签转化为YOLO标签
  8. 正则系列1: re.match用法
  9. system进程占用资源高居不下
  10. (翻译)文本字段的最优显示方式
  11. 怎么用python下载视频_使用Python从直接URL下载视频
  12. 电商平台性能测试报告
  13. vue路由跳转不执行mounted方法
  14. 【优化求解】基于matlab禁忌搜索算法求解函数极值问题【含Matlab源码 1204期】
  15. springboot常见错误及其解决方式
  16. 解决husky6.0.0失效的问题
  17. 降本增效两不误——云原生赋能航空业数字化转型
  18. 配置IPSG防止主机私自更改IP地址上网(动态绑定)
  19. 谁有惠普V3432 for 2000的声卡驱动,,救急啊!
  20. C++11新特性之POD类型

热门文章

  1. 软件BT是硬盘杀手?
  2. python print函数用法_Python3.2中Print函数用法实例详解
  3. python网络开发框架_greenev首页、文档和下载 - Python网络服务框架 - OSCHINA - 中文开源技术交流社区...
  4. pl/sql 11g 12705_如何用PLSQL导出数据库存表结构信息
  5. 免费Windows系统服务器,免费试用人数太多,Windows 365云电脑服务器炸了,官方紧急暂停...
  6. openssh漏洞_漏洞预警 | OpenSSH 命令注入漏洞
  7. linq where 数组_C#中LINQ与数据管道
  8. 国赛无望,兄弟尽力了
  9. 第十六届全国大学生智能车竞赛竞速组-室内视觉组补充说明
  10. Java代码统计某个字符串出现的次数