EDA技术入门与提高 第二版 教学课件 作者 王行 全书 第9章.pptVIP

EDA技术入门与提高 第二版 教学课件 作者 王行 全书 第9章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 VHDL 设计实例 9.1 SPI接口的VHDL实现   SPI(Serial Peripheral Interface)即串行外围接口,由Motorola公司提出。目前SPI接口主要应用在EEPROM、Flash、实时时钟、A/D转换器、数字信号处理器和数字信号解码芯片上,作为与CPU之间进行同步串行数据传输的接口,速度可达到Mb/s级别。在FPGA器件上实现了SPI接口后,就可以代替CPU,直接控制这些外围器件。 9.1.1 SPI接口介绍   SPI接口是以主从方式工作的,这种模式通常有一个主控器件和一个或多个从属器件,其接口包括以下4种信号:   (1) ?MOSI:主控器件数据输出,从属器件数据输入;   (2) ?MISO:主控器件数据输入,从属器件数据输出;   (3) ?SCLK:时钟信号,由主控器件产生;   (4) ?  :从属器件使能信号,由主控器件控制。   点对点的通信连接关系如图9.1所示。在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信。 图9.1 点对点的通信连接关系   多个从属器件的系统如图9.2所示。在多个从属器件的系统中,每个从属器件需要独立地使能信号,硬件上比点对点的系统要稍微复杂一些。   SPI接口的核心是两个移位寄存器,传输的数据为8位,在主控器件产生的从属器件使能信号  和移位时钟脉冲SCLK的作用下,按位传输,数据的高位在前,低位在后。如图9.3所示,在SCLK的下降沿上数据改变,同时一位数据被存入移位寄存器。 图9.2 一主多从的SPI接口 图9.3 SPI接口通信时序 图9.4 SPI接口内部核心硬件结构 9.1.2 移位寄存器编程   SPI接口的核心是一个8位的同步移位寄存器。为了实现全双工的SPI接口,在移位寄存器向外发送数据时,同时也在接收数据。移位寄存器的VHDL描述如下:   LIBRARY IEEE;   USE IEEE.STD_LOGIC_1164.ALL;   USE IEEE.NUMERIC_STD.ALL;   ENTITY shift_r IS -------------ENTITY---------------------    PORT(    clk:IN STD_LOGIC;   --系统时钟输入    rst:IN STD_LOGIC;--复位信号输入    sclk:IN STD_LOGIC; --移位寄存器移位时钟输入    shift_reload:IN STD_LOGIC; --移位寄存器发送数据加载信号    shift_in:IN STD_LOGIC; --移位寄存器输入    shift_out:OUT STD_LOGIC;--移位寄存器输出    datain:IN STD_LOGIC_VECTOR(7 DOWNTO 0);     --移位寄存器发送参数接口    dataout:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)     --移位寄存器接收数据接口 );   END shift_r;   ARCHITECTURE behv OF shift_r IS    SIGNAL shift_clk:STD_LOGIC;    SIGNAL sck_r1:STD_LOGIC;    SIGNAL sck_r2:STD_LOGIC;    SIGNAL sck_r3:STD_LOGIC;    SIGNAL shift_reg:STD_LOGIC_VECTOR                   (7 DOWNTO 0);   BEGIN    shift_clk = NOT sck_r1 AND sck_r2;    flop_proc:PROCESS(clk) ----------Shift register---------    BEGIN    IF (clkevent AND clk=1) THEN sck_r2 = sck_r1; --移位寄存器时钟信号同步    sck_r1 = sclk;    END IF;    END PROCESS;   sr_proc:PROCESS(

您可能关注的文档

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档