基于verilog的smbus总线控制器的设计与实现

基于verilog的smbus总线控制器的设计与实现

ID:10583332

大小:56.00 KB

页数:5页

时间:2018-07-07

基于verilog的smbus总线控制器的设计与实现_第1页
基于verilog的smbus总线控制器的设计与实现_第2页
基于verilog的smbus总线控制器的设计与实现_第3页
基于verilog的smbus总线控制器的设计与实现_第4页
基于verilog的smbus总线控制器的设计与实现_第5页
资源描述:

《基于verilog的smbus总线控制器的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于Verilog的SMBus总线控制器的设计与实现

2、第1内容显示中lunicrocontroller)通讯系统中,可以满足绝大多数情况下对传输速率、信号稳定性等性能的要求,且相对于并行总线节省了大量的硬件资源。因此多μC通讯系统采用SMBus总线来实现是一种很好的解决方案。本文提出一种基于Verilog的SMBus总线控制器的设计方法。该方法将总线控制器用有限状态机来实现,并将其应用于基于PCI-Express技术的桥接芯片中。通过仿真测试,证明该方法是稳定有效的。1SMBus规范分析SMBus由两根总线即串行

3、数据线(SDA)和串行时钟线(SCL)构成。主要应用于主从系统。主器件控制总线操作,包括开始/结束传输、发送信息并产生SMBus总线系统时钟等。在整个传输过程中,所有的传送都通过主控的SCL来同步。为使总线有“线与”功能,所有器件的SMBus接口都必须是漏极开路或集电极开路的,并且通过上拉电阻使总线在空闲状态下为高电平状态。这种结构能使不同速度的器件同步运行。图1是典型的SMBus总线结构图。500)this.style.ouseg(this)">1.2SMBus通讯时序总线上的所有器件都有一个唯一的地址,且都可

4、以工作在传送或接收方式。因此,有四种工作模式,即主发送、主接收、从发送和从接收。SMBus总线还具有总线仲裁功能,保证在同一时间只有一个主器件在控制总线。图2是读/写一个字节的时序格式。图中白色块是主器件控制SDA线,灰度块是从器件控制SDA线,SCL线一直都由主器件控制。由图可见,传输由一个开始条件开始,并由一个结束条件中止。SDA上的数据在SCL高电平时必须保持稳定,不允许有电平跳变;SDA电平只有在SCL低电平时才可以改变。开始条件和结束条件是特殊的,可以在SCL高电平时改变SDA的电平,在SCL高是电平时

5、,开始条件是把SDA从高电平拉到低电平,而结束条件则把SDA从低电平拉到高电平。开始条件和结束条件的这种定义方法可以避免电平与传输的数据相混淆。SMBus协议定义了十二种传输命令格式,其中以读/写一个字节命令格式最为重要。本文所设计的控制器主要用这两种命令格式,所以本文主要分析这两种格式,其它的与之类似,可以很容易地加以扩展,在此略过。下面分析图2的时序:1)总线空闲时,SCL和SDA保证为高电平,等待开始条件。2)主控产生开始条件,表明要发起传输。3)主控传送一个7位地址和一个写位,指定目标器件和写方式。4)目

6、标器件应答。5)主控传送一个8位mandCode,指定本次操作类型。6)目标器件应答。7)如果是ouseg(this)">在SMBus上传输的每一个数据包括8个数据位和一个确认位,所以需要9个SCL时钟。主控确认位时释放总线,由从器件来驱动SDA。1.3SMBus的总线仲裁一个主控开始一个传输时并不知道是否还有其它主控也想进行传输。当CLK为高电平时将在SDA线上进行仲裁。当一个主控发送高电平而有其它的主控发送低电平时,这个主控将失去总线控制权。如果一个主控同时具有检测目标器件的功能,那当它失去总线控制权时,它仍

7、将检测总线上实际传送的地址,以确定掌握总线控制的主控进行操作的目标。2SMBus控制器设计本文将SMBus控制器分为两个模块:与SMBus的接口模块和与μC的接口模块。与SMBus的接口模块输出SDA和SCL两个信号;与μC的接口模块输出ADDR[7:0]、DATA[7:0]及若干控制信号。为了便于μC对控制器的操作,与μC的接口模块中定义了四个8位寄存器,分别是数据寄存器(DR)、地址寄存器(AR)、状态寄存器(SR)和控制寄存器(CR)。DR存放传送或接收的数据;AR存放控制器的本地地址;SR存放当前控制器的

8、状态;CR存放控制器配置和操作命令。SR是只读的,其它寄存器都可以被μC进行读写。与SMBus的接口模块又分成下列几个分模块:SCL看门狗、开始/结束信号检测、仲裁检测、开始/结束信号生成、SCL生成状态机和主状态机等模块。看门狗模块用来处理SMBus协议规定的正常SCL和SDA不可以出现的两种情况:1)SCL低电平超过25ms。一旦超过,所有器件必须重置。在本设计中,一旦检测到SCL下降沿就开始计时,25ms内出现上升沿则计数器清零。在计数超过时限则把控制寄存器中的RESET位置位。2)SCL和SDA高电平超过

9、50ms。一旦超过,所有器件都认为总线处于空闲状态。这时会将状态寄存器中的BB(BusBusy)位清零。500)this.style.ouseg(this)">SCL生成状态机模块用来控制SCL线。当SMBus处于主控模式时,它就要在传输期间一直控制SCL线。SCL的频率可以从10kHz到100kHz不等,可以通过对系统时钟进行分频得到。程序中定义了一些常量,如HIGH_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。