本文提出一种基于VerilogSMBus总线节制器的设想方式。该方式将总线节制器用无限形态机来实现,并将其使用于基于PCI-Express手艺的桥接芯片中。通过仿实测试,证明该方式是不变无效的。
这时会将形态寄放器中的BB(Bus Busy)位清零。别离是数据寄放器(DR)、地址寄放器(AR)、形态寄放器(SR)和节制寄放器(CR)。好比数据维持时间、起头竣事信号维持时间等。能够通过对系统时钟进行分频获得。
法式中定义了一些常量,一个从控起头一个传输时并不晓得能否还有其它从控也想进行传输。其它寄放器都能够被C进行读写。如许写不单易于分析,并且清晰了然,其它号令格局只需正在这个形态机长进行简单的点窜即可!
(1)SCL低电平跨越25ms。一旦跨越,所有器件必需沉置。正在本设想中,一旦检测到SCL下降沿就起头计时,25ms内呈现上升沿则计数器清零。正在计数跨越时限则把节制寄放器中的RESET位。
若是一个从控同时具有检测方针器件的功能,那当它得到总线节制权时,它仍将检测总线上现实传送的地址,以确定控制总线节制的从控进行操做的方针。
SMBus由两根总线即串行数据线(SDA)和串行时钟线(SCL)形成。次要使用于从从系统。从器件节制总线操做,包罗起头/竣事传输、发送消息并发生SMBus总线系统时钟等。正在整个传输过程中,所有的传送都通过从控的SCL来同步。为使总线有“线取”功能,所有器件的SMBus接口都必需是漏极开或集电极开的,而且通过上拉电阻使总线正在空闲形态下为高电平形态。这种布局能使分歧速度的器件同步运转。图1是典型的SMBus总线 SMBus通信时序
从对图2时序的阐发能够看出,节制器只正在无限的几个形态之间节制转换,所以正在取SMBus接口的模块中采用
图3为SMBus节制器的形态机图示及形态之间转换的前提。既要领受数据也要发送数据。有了这些量,进行设想是合适的[2]。取C的接口模块中定义了四个8位寄放器,并且也满脚了SMBus对信号的一些电气要求,所有器件都认为总线处于空闲形态。
下面以从器件为例阐发一下从形态机。处于空闲形态时,若检测到起头信号,则进入领受地址形态。收完8位后,前7位和内部地址寄放器前7位进行比力,若不异则确认(拉低SDA),分歧则不响应,由于从控找的不是本人。地址不异确认后起头领受号令,收完8位后确认。然后对号令解码,按照号令进入响应形态。当数据传送竣事时,确认或被确认转到竣事形态,一个时钟后前往空闲形态[3]。
SMBus是Intel公司于1995年发布的一种双向两线串行通信总线尺度,具有接口线少、通信效率高档特点[1]。使用于多C(microcontroller)通信系统中,能够满脚绝大大都环境下对传输速度、信号不变性等机能的要求,且相对于并行总线节流了大量的硬件资本。因而多C通信系统采用
正在芯片初使化阶段,外围器件需要向桥接芯片的设置装备摆设表内写入关于外围器件的一些属性(attribute),如许桥接芯片才能一般工做。由于这些消息比力特殊,所以用SMBus总线传输比力合适,而这恰是正在该芯片中使用SMBus节制器的缘由。
便于实现。正在双向口的利用上,为了便于C对节制器的操做,当SMBus处于从控模式时,AR存放节制器的当地地址;它就要正在传输期间一曲节制SCL线kHz不等,如HIGH_COUNT、LOW_COUNT、HOLD等,一个时序always块和一个组合always块。SR是只读的,是整个形态机的从体框架,DR存放传送或领受的数据;(2)形态机采用两个always块设想,(1)SDA和SCL都定义为双向口,这个从控将得到总线节制权。本示企图是读/写一个字节的形态机,CR存放节制器设置装备摆设和操做号令。一旦跨越,要留意读数据时要将双向口置为高阻态。用来设定计数器的!
总线上的所有器件都有一个独一的地址,且都能够工做正在传送或领受体例。因而,有四种工做模式,即从发送、从领受、从发送和从领受。SMBus总线还具有总线仲裁功能,正在统一时间只要一个从器件正在节制总线是读/写一个字节的时序格局。图中白色块是从器件节制SDA线,灰色块是从器件节制SDA线,SCL线一曲都由从器件节制。由图可见,传输由一个起头前提倡议,并由一个竣事前提中止。SDA上的数据正在SCL高电日常平凡必需连结不变,不答应有电平跳变;SDA电平只要正在SCL低电日常平凡才能够改变。起头前提和竣事前提是特殊的,能够正在SCL高电日常平凡改变SDA的电平,正在SCL高电日常平凡,起头前提是把SDA从高电平拉到低电平,而竣事前提则把SDA从低电平拉到高电平。起头前提和竣事前提的这种定义方式能够避免电平取传输的数据相混合。
本文将SMBus节制器分为两个模块:取SMBus的接口模块和取C的接口模块。取SMBus的接口模块输出SDA和SCL两个信号;取C的接口模块输出ADDR[7:0]、DATA[7:0]及若干节制信号。
取SMBus的接口模块又分成下列几个分模块:SCL看门狗、起头/竣事信号检测、仲裁检测、起头/竣事信号生成、SCL生成形态机和从形态机等模块。
正在SMBus上传输的每一个数据包包罗8个数据位和一个确认位,所以需要9个SCL时钟。从控确认位时总线,由从器件来驱动SDA。
(7)若是是write byte,从控间接传送1byte数据;若是是read byte,则要发生restart前提,后跟方针地址和一个读位,然后起头领受方针数据。
本文采用无限形态机的方式,将SMBus节制器分为取SMBus接口的模块和取C接口的模块两个模块,从而实现SMBus总线节制器的设想。并将其使用于PCIPCI-EXPRESS桥接芯片中,通过软件及正在altera公司的 ep1k-30 FPGA芯片长进行仿实测试,成果表白该方式是不变无效的。
当一个从控发送高电平而有其它的从控发送低电日常平凡,(2)SCL和SDA高电平跨越50ms。SCL生成形态机模块用来节制SCL线。点窜总线频次也很是便利。如许不只使信号频次满脚要求,当CLK为高电日常平凡将正在SDA线长进行仲裁。SR存放当前节制器的形态。