Xilinx FPGA设计与实践教程 教学课件 作者 赵吉成 第11 16章 第15章.ppt

Xilinx FPGA设计与实践教程 教学课件 作者 赵吉成 第11 16章 第15章.ppt

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
15.1 输 出 端 口 第一种格式,端口的id存储在sY寄存器中;第二种格式,端口名称特指端口的id号,它可以是两位的十六进制数或者预定义的符号常量。输出数据通常存储在sX寄存器中。如图15-1所示是输出指令为“output s0,02”的时序图。PicoBlaze指令执行时间为两个时钟周期,指令执行时,s0内容输出到输出端口以及02输出到端口id,一共需要两个时钟周期。write_strobe信号在第二个时钟周期有效,它可以作为存储输出寄存器的使能信号或者用来初始化指定接口操作。 图15-1 输出指令时序图 15.1.2 输出接口 PicoBlaze与输出外设之间的接口通常由译码电路和输出缓冲器组成。译码电路针对端口id号译码并产生相对应的使能信号。在output指令执行后,数据存储到相应的缓冲器当中。 为了理解输出接口的电路结构,假设PicoBlaze接口包含四个输出缓冲器,输出端口id号分别定义为0016、0116、0216、0316。注意:端口地址的高六位都是一样的,只是通过低两位来区别不同的端口。电路的结构框图如图15-2所示。电路的关键部分是译码电路,其真值表如表15-1所示。译码电路为一个2-4译码器,在输出指令的第二个时钟周期,write_strobe信号有效,并且四位en_d信号中有一位有效。仅仅一个时钟周期的使能信号能激活对应输出寄存器从输出端口接收数据。输出指令为“output s0,02”的译码指令时序如图15-1所示,在输出指令执行的第二个时钟周期,en_d[2]信号有效,输出端口数据在下一个时钟上升沿存储到对应的数据缓冲器中。 图15-2 电路的结构框图 一旦理解了基本的操作,便可以设计,HDL代码如下: always@* if (write_strobe) case (port_id[1:0]) 2b00: en_d = 4b0001; 2b01: en_d = 4b0010; 2b10: en_d = 4b0100; 2b11:en_d = 4b1000; endcase else en_d = 4b0000; 以上解决方法可以应用在任何输出端口。   有时要求编口地址可改变。可以在前面的例子中使用二进制编码。如果输出端口地址小于8,则可以用一位热码简化译码电路。比如,可以定义4个端口id为:0116(000000012)、0216(000000102)、0416(000001002)和0816(000010002),这时译码逻辑被简化为   always@*    if (write_strobe)    en_d = port_id[3:0];    else    en_d = 4b0000;   需要注意的是,如果只有一个输出端口,那么无需译码逻辑。write_strobe信号可以直接连接在寄存器使能信号上。   采用伪代码表示I/O口在代码中对应的复杂设计非常有用。在文件开头声明二进制地址,例如,初始化输出地址可以声明如下:   ;-----------------------------输出端口定义----------------------------   constant out_port_a, 00   constant out_port_b, 01   constant out_port_c, 02   constant out_port_d, 03   如果赋值改变,则仅需要修改文件头。清晰的文件头往往在开发HDL代码时用于端口id号分辨。 15.2 输 入 端 口 15.2.1 输入指令和时序   输入指令input从输入端口读回数据。与输出指令相似,输入指令也有两种格式:     input sX,(sY);   和    input sX, 端口名称   其中,sY寄存器或者端口名称表示端口id号。接收回来的数据保存在sX寄存器中。   输入指令为“input s0,02”的时序图如图15-3所示。当指令执行时,02输出到端口id,两个时钟周期后,输入端口数据在时钟上升沿时被采样并存储到s0寄存器,外部电路必须确保在采样期间输入数据稳定,以防数据采集错误。   与输出指令相同,read_strobe信号在第二个时钟周期有效。read_strobe信号的功能与write_strobe的相似,在15.3节将详细介绍。 图15-3 输入指令接口时序 15.2.2 输入接口   PicoBlaze与输入外设之间的接口通常需要一个多路选择电路,根据port_id

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档