CN111078614B - 一种基于fpga的功能模块 - Google Patents

一种基于fpga的功能模块 Download PDF

Info

Publication number
CN111078614B
CN111078614B CN201911318284.8A CN201911318284A CN111078614B CN 111078614 B CN111078614 B CN 111078614B CN 201911318284 A CN201911318284 A CN 201911318284A CN 111078614 B CN111078614 B CN 111078614B
Authority
CN
China
Prior art keywords
module
slave
data
downstream
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911318284.8A
Other languages
English (en)
Other versions
CN111078614A (zh
Inventor
陈建国
兰英
蒋小涵
康海静
黄宇
徐灵飞
柳建
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Engineering and Technical College of Chengdu University of Technology
Original Assignee
Engineering and Technical College of Chengdu University of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Engineering and Technical College of Chengdu University of Technology filed Critical Engineering and Technical College of Chengdu University of Technology
Priority to CN201911318284.8A priority Critical patent/CN111078614B/zh
Publication of CN111078614A publication Critical patent/CN111078614A/zh
Application granted granted Critical
Publication of CN111078614B publication Critical patent/CN111078614B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0016Inter-integrated circuit (I2C)
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)
  • Information Transfer Systems (AREA)

Abstract

本发明公开了一种基于FPGA的功能模块,包括:顶层模块、DMUX选择模块、MUX32选择模块、从机Slave模块、逻辑模块、TestBench模块、下游从机模块和三态门模块。所有模块都在顶层模块中实现了连接,并且在顶层模块中也运用了很重要的时序逻辑,在I2C协议的实现中,其中的难点在于SCL/SDA数据和时序线上的双向传输,基于设计的时序逻辑使三态门逻辑可以实现数据的双向传输。本发明的优点是:充分利用FPGA的可定制、可重构、并行性,不仅仅用FPGA实现了PCA9547芯片基本功能的替代,同时还拓展了PCA9547的功能,使I2C总线资源被拓展,拓展更多路的通道,却更加节约电路设计的成本,节约电路设计时的面积与复杂度,提供了更加灵活使用I2C资源的方式。

Description

一种基于FPGA的功能模块
技术领域
本发明涉及数字电路技术领域,特别涉及一种基于FPGA的功能模块,该功能模块基于数字电路理论以及I2C协议并使用硬件描述语言进行开发设计的,可以替代并扩展PCA9547芯片的功能。
背景技术
在信息传输时代,许多领域都需要各种各样的信息传输协议,I2C协议就是其中一种灵活性极强的协议,运用非常广泛作用于许多领域。对于I2C协议可以说是很多信息行业的必须了解的知识。
I2C是Inter-Integrated Circuit(集成电路总线),这种集成电路总线类型是有飞利浦半导体公司所涉及的,产生于八十年代。它的作用是用来连接整体电路,I2C是一种多向控制总线,言简意赅来说,就是可以使多个芯片同时连接到同一个I2C总线下,同时每个芯片都可以作为数据传输的控制开关。这种协议方法大大简便了信息数据的传输总线接口。
PCA954x系列就是一种I2C开关芯片,比如PCA9547就可以实现八个开关,从而实现八条I2C的信息通道。这样就可以在有限的I2C资源上拓展出足够多的接口,解决了许多传输问题和I2C总线问题。
FPGA是一种可编程器件,它常用于通信、网络、工业控制等多种工程领域中。它是非常特殊的一种,有如同嵌入式系统开发的灵活性与广泛性,但与嵌入式系统开发不同的是,在FPGA开发中,FPGA开发工程师使用硬件描述语言Verilog HDL或者VHDL来达到如同嵌入式工程师使用c\c++语言一样的灵活定制设计系统的目的,不同的作用就有不同的开发方法。开发中运用了许多组合逻辑和时序逻辑,许多功能也是在这两种逻辑下实现的。
FPGA作为一种半定制集成电路,具有很好的灵活性。第一,FPGA拥有更大的并行度,可以使许多模块相互独立的进行计算。因此同时运行多个不同的逻辑模块,不仅可以使时间开销减小,因为它的集成度高,从某种程度也可以降低硬件资源开销,而且其它设计也可以快捷调用这些模块。第二,可重构性:由于参照PCA954x芯片系列,发现该系列芯片的基本功能大致相似,不同点在于下游拓展的接口数量不同,那么FPGA可以拓展接口数目,这样就可以节省很多资源与资金,在FPGA的开发中能更简便的使用该芯片的功能。第三,可定制性:在FPGA开发中,可在指定的有效资源内,用户可以定制自己所涉及的逻辑,在这方面,替代PCA9547就有了很大的可行性。
因此只要能合理灵地运用FPGA,充分利用FPGA的优点,那么FPGA就可以完成大部分工程领域中使用的数字电路的功能。正是基于FPGA的这些技术灵活性,完全可以基于FPGA来完成PCA9547的功能设计。
同时,又因为芯片PCA9547是一款通过I2C总线控制的双向转换开关,芯片可以控制下游从机与主机的通信,但是由于它的3地址引脚只允许8个设备在I2C总线,允许一个通道与总线相连,电源启动通道0与总线相连。所以在I2C总线资源使用有限以及下游拓展的接口也有限情况下,需要使用更多的芯片PCA9547进行接口的扩展,这样无疑会增加成本,同时也增加了控制的复杂性。
综上所述,结合FPGA的优点以及现有芯片PCA9547接口拓展不足够的原因,基于FPGA完成替代PCA9547芯片功能模块,完成了其芯片对于下游从机的选择功能,并且也完成了主机可以对自身读与写的功能。在完成芯片基本功能上,有效的拓展了下游的I2C接口(本设计拓展了32个接口),使该模块比PCA9547芯片更具有价值性与灵活性。
发明内容
本发明针对现有技术的缺陷,提供了一种基于FPGA的功能模块,解决了现有技术中存在的缺陷。
为了实现以上发明目的,本发明采取的技术方案如下:
一种基于FPGA的功能模块,包括:顶层模块,所有模块都在顶层模块中实现了连接,并且在顶层模块中也运用了很重要的时序逻辑,在I2C协议的实现中,其中的难点在于SCL/SDA数据和时序线上的双向传输,基于设计的时序逻辑使三态门逻辑可以实现数据的双向传输。
顶层模块包括:DMUX选择模块、MUX32选择模块、从机Slave模块、逻辑模块、TestBench模块、下游从机模块和三态门模块。
DMUX模块:接收从机Slave传输的通道地址,进行地址的选择,并与顶层传输的三态门使能信号进行判断,打开下游某个通道,让其与上游I2C总线相通信,从而使上游主机与下游被选择从机通信,特别注意的是,这是与三态门逻辑信号共同完成其功能的。
MUX32选择模块:接收下游传输回的数据,进行通道选择,从而选择某通道数据进行传回;MUX32选择模块需要32条输入和来自Slave模块的控制寄存器数据,输出一条被选中的数据线。MUX32选择模块接受控制寄存器的数据,选择32条数据线中某一条与其输出数据线相连,没有被选中的数据线全部被拉高。
从机Slave模块:内部基于状态机方式设计,该模块的功能是芯片PCA9547功能最直观的体现。该模块具有从机接收器的功能,替代普通从机设备,接受主机地址数据,判断地址,回应应答信号,接受通道地址,所以也具有一个关键的作用就是能选通下游的某一个通道,传输通道地址于其他模块,被主机读取数据。
逻辑模块:是一种时序逻辑,使用此时序逻辑对三态门使能信号的控制,可以实现判断SDA数据线上的低电平信号是上游传输过来的还是下游传输过来的,然后再使能三态门,使I2C总线可以双向的传递。三态门使能信号在顶层进行时序逻辑编码设计,传输到DMUX模块与顶层模块中使用。
三态门逻辑模块:I2C总线的双向传输,该设计运用了三态门。时序逻辑运用上游SDA数据与下游SDA数据得出三态门使能信号,这样使用时序逻辑对三态门使能信号的控制,使I2C总线可以双向的传递,也即完成SDA数据线的双向传输功能,三态门使能信号在顶层进行时序逻辑,传输到DMUX模块与顶层模块中使用。
TestBench模块:可以传输数据给从机,也可接受从机数据。仿真中使用,用于验证替代模块是否完成其功能。
下游从机模块:主要使用于仿真中,此仿真调用设计模块中的I2C_Slave模块来验证替代模块是否完成其功能。
进一步地,顶层模块的输入输出接口分别为:
Reset:外部复位引脚,复位引脚低电平有效。
CLK:高频时钟,运用高频时钟能更加简便与更少误差实现设计。
A:外部7位地址引脚,芯片PCA9547外部3位地址引脚,此设计拓展为7位。
UP_SDA:I2C总线的SDA数据线,相当于I2C总线,主机上的I2C总线。
UP_SDA:I2C总线的SCL数据线,相当于I2C总线,主机上的I2C总线。
DOWN_SDA[0:31]:下游I2C的32条SDA数据线,下游的I2C。
DOWN_SCL[0:31]:下游I2C的32条SCL时钟线,下游的I2C。
进一步地,从机Slave模块包括:地址寄存器、控制寄存器、状态机和计数器
地址寄存器存放本Slave的地址数据,当从机接收到主机传来的地址数据,会将接收到的地址数据与地址寄存器相比较,如果相同说明主机访问的就是本从机Slave。
控制寄存器在默认情况下,会储存本身Slave的数据,该数据具体有Slave决定。如果主机需要写从机,那么此Slave的功能就是将传输来的数据当做下游通道地址,并将该地址的通道打开,与上游连接。如果主机需要读从机Slave,那么该Slave会将控制寄存器里的数据传输给主机Master。
状态机里有许多状态,状态包括:UP_SDA_IN提供主机的SDA数据,UP_SCL_INT提供主机的SCL时钟,CLK提供高频时钟,A提供外部引脚地址,Reset提供外部复位引脚。状态机输出的上游的SDA数据用于连接下游的DOWN_SDA,Control_Reg输出用于连接选择器。通过状态,该从机Slave模块可以完成该Slave的输出,对控制寄存器的输出,用于其他模块的使用。
计数器用于当检测到启动信号时,每一个时钟脉冲的下降沿到来时,计数器就自增一,直到计数器增加到20,计数器会变回0,当检测到停止信号时,计数器也会变回0.意味着,计数器计数了20个时钟脉冲。计数器的作用在于状态的跳转条件。
进一步地,所述三态门模块包括两个三态门逻辑,一个是上游三态门,一个为下游三态门。这两个三态门都用于控制Slave与I2C总线的传输。
顶层的三态门逻辑主要运用控制三态门的使能信号,来控制上游三态门与下游三态门。
上游三态门使能信号逻辑:该使能信号在此程序中名称为UP_EN,首先判断复位信号有没有开启,如果没有开启,再判断UP_EN信号是否为0,如果为0,再判断该有没有低电平信号输回,如果检测到低电平,那么就使UP_EN为1.如果UP_EN信号不为0时,再判断主机没有传输0并且从机传输了0回来,那么这时就使UP_EN信号为0.如果主机SDA数据线检测到了上升沿并且从机SDA数据线检测到低电平。那么这时就使UP_EN为0。
下游三态门使能信号逻辑:该使能信号在此程序中名称为DOWN_EN,该逻辑与上游三态门使能信号逻辑大致相同。首先判断复位信号有没有开启,如果没有开启,再判断DOWN_EN信号是否为0,如果为0,再判断上游SDA数据线是否为上升沿,如果是,那么就使DOWN_EN为1.如果DOWN_EN信号不为0时,再判断上游SDA数据线检测到下降沿并且下游从机传输了0回来,那么这时就使DOWN_EN信号为0.如果主机SDA数据线为低电平,下游从机SDA数据线检测到了上升沿。那么这时就使DOWN_EN为0。
当上游与下游的三态门使能信号为0时,相当于输出,当使能信号为0时,此设计相当于输入。
进一步地,TestBench模块用于设计的验证,运用ModelSim软件来执行。可以读或者写下游的从机,该模块中有一个三态门,用于控制数据的双向传输。
该模块中,设定的了时序程序为,选通通道三,写通道三,读通道三。选通通道五,写通道五,读通道五。选通某个通道,可以在该模块中改写数据就可以达到。该模块简易的用硬件语言描写了一段简单的时序来检验设计模块是否达到所预想的功能。
该模块可以读或者写本设计的从机Slave也可以读或者写下游Slave从机。接受从机传回的数据做出相应的反应。
与现有技术相比,本发明的优点在于:
针对PCA9547芯片功能拓展接口功能不足够的缺点,或者为了拓展更多的接口造成设计成本与设计复杂度增加了的缺陷,充分利用FPGA的可定制、可重构、并行性,不仅仅用FPGA实现了PCA9547芯片基本功能的替代,同时还拓展了PCA9547的功能,在本发明下拓展了使用I2C时的下游接口,使I2C总线资源被拓展,拓展32路通道,基于本发明还可以拓展更多路的通道,但是却更加节约电路设计的成本,节约电路设计时的面积与复杂度,提供了更加灵活使用I2C资源的方式。
附图说明
图1是本发明实施例顶层模块结构图;
图2是本发明实施例从机Slave模块结构图;
图3是本发明实施例状态机状态示意图;
图4是本发明实施例DMUX选择模块结构图;
图5是本发明实施例MUX32选择模块结构图;
图6是本发明实施例三态门模块结构图;
图7是本发明实施例仿真结果I示意图;
图8是本发明实施例仿真结果II示意图;
图9是本发明实施例通道仿真结果示意图;
图10是本发明实施例控制寄存器仿真结果示意图;
图11是本发明实施例应答信号仿真结果示意图;
图12是本发明实施例从机数据仿真结果示意图;
图13是本发明实施例三态门使能信号仿真结果示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下根据附图并列举实施例,对本发明做进一步详细说明。
如图1所示,一种基于FPGA的功能模块,包括:顶层模块;
顶层模块包括:DMUX选择模块、MUX32选择模块、从机Slave模块、逻辑模块和三态门模块。有些模块单独由编码得到,有些模块的编写就在顶层模块中。
顶层模块的输入输出接口分别为:
Reset:外部复位引脚,复位引脚低电平有效。
CLK:高频时钟,运用高频时钟能更加简便与更少误差实现设计。
A:外部7位地址引脚,芯片PCA9547外部3位地址引脚,此设计拓展为7位。
UP_SDA:I2C总线的SDA数据线,相当于I2C总线,主机上的I2C总线。
UP_SDA:I2C总线的SCL数据线,相当于I2C总线,主机上的I2C总线。
DOWN_SDA[0:31]:下游I2C的32条SDA数据线,下游的I2C。
DOWN_SCL[0:31]:下游I2C的32条SCL时钟线,下游的I2C。
从机Slave模块
此Slave模块是该设计的核心模块,该模块的功能是芯片PCA9547功能最直观的体现。该模块具有从机接收器的功能,也具有一个关键的作用就是能选通下游的某一个通道。
首先该模块中拥有两个重要的寄存器,一个是地址寄存器,另一个为控制寄存器。地址寄存器存放本Slave的地址数据,当从机接收到主机传来的地址数据,会将接收到的地址数据与地址寄存器相比较,如果相同说明主机访问的就是本从机Slave。控制寄存器在默认情况下,会储存本身Slave的数据,该数据具体有Slave自己决定,通常来说,默认的数据是下游默认开启的通道地址。如果主机需要写从机,那么此Slave的功能就是将传输来的数据当做下游通道地址,并将该地址的通道打开,与上游连接。如果主机需要读从机Slave,那么该Slave会将控制寄存器里的数据传输给主机Master。
如图2所示,该Slave模块中有一个状态机,状态机里有许多状态,涉及到I2C时序问题。UP_SDA_IN提供主机的SDA数据,UP_SCL_INT提供主机的SCL时钟,CLK提供高频时钟,A提供外部引脚地址,Reset提供外部复位引脚。状态机输出的上游的SDA数据用于连接下游的DOWN_SDA,Control_Reg输出用于连接选择器。
在该从机Slave模块中,还有一个很重要的器件,那就是计数器。I2C时序是数据与时钟相伴传输的,精确到时钟脉冲上升沿或者下降沿。在该设计中,当检测到启动信号时,每一个时钟脉冲的下降沿到来时,计数器就自增一,直到计数器增加到20,计数器会变回0,当检测到停止信号时,计数器也会变回0.意味着,计数器计数了20个时钟脉冲。计数器的作用在于状态的跳转条件。
如图3所示,可以得到该状态机拥有9个状态,每个状态的作用不一样,当一个状态跳转到另一个状态时条件也不一样。每个状态相对都是相对独立的,状态可以输出,状态跳转后将执行动作,也就是该状态需要执行该模块的功能。该状态机有IDLE状态,D_ADD状态,NACK1状态,ACK1状态,W状态,R状态,STOP状态,ACK2状态,NACK2状态。下文将介绍各个状态的条件与动作。
IDLE状态条件:IDLE状态表示该设计的空闲状态,该空闲状态表示该模块将在空闲状态下实行空闲状态的动作。在电源开启时,I2C总线上没有出现启动信号时,那么这个时候的状态就是空闲状态,该空闲状态没有任何动作。如何跳转到另一个状态呢,当检测到启动信号时,状态就从IDLE状态转换为D_ADD状态。在此设计中,当SCL时钟的高电平时,SDA数据线出现了下降沿。这表明主机Master要开始传输数据,该Slave要做好接受数据的准备。
D_ADD跳转条件:D_ADD状态表示,该Slave模块需要接受Master的地址数据。当时钟计数大于等于8时,并且时钟为下降沿时,判断主机传输来的地址位与外部引脚地址为是否相同,如果相同,状态跳转为ACK1,如果不相同,状态跳转为NACK1。如果时钟不满足上列条件,那么状态一直停留在D_ADD状态。
ACK1跳转条件:在时钟计数器计数大于等于9时并且时钟下降沿时,判断传送来的字节最后一位是否为0,如果是0,那么状态跳转为W状态,如果是1,状态跳转为R状态。当不满足计数器和时钟下降沿条件时,该状态将会一直停留在ACK1状态。
NACK1跳转条件:当时钟计数器计数大于等于9并且时钟下降沿时,状态跳转为IDLE状态,不满足时钟条件时,状态将会停留在NACK1状态。状态与状态之间都会相互牵制。
R跳转条件:该状态如果判断到时钟计数器大于等于17并且在时钟下降沿时,状态将会跳转为NACK2,当不满足时钟条件时,将会停留在R状态下。
W跳转条件:该状态如果判断到时钟计数器大于等于17并且在时钟下降沿时,状态将会跳转为ACK2,当不满足时钟条件时,将会停留在W状态下。
ACK2跳转条件:该状态如果判断到时钟计数器大于等于18并且在时钟下降沿时,状态将会跳转为NACK2,当不满足时钟条件时,将会停留在R状态下。
NACK2跳转条件:该状态如果判断到时钟计数器大于等于18并且在时钟下降沿时,状态将会跳转为STOP,当不满足时钟条件时,将会停留在NACK2状态下。
STOP跳转条件:当检测到时钟高电平器件,SDA数据线有上升沿时,说明Master主机传输了停止信号,这时状态应该跳转为IDLE状态,不满足条件时,状态将停留在STOP状态。
D_ADD状态动作:该状态的主要动作在于串行接受主机Master传来的地址数据,并将其与外部地址引脚做比较。该模块中有一个8-bit的寄存器,用来串行储存传输来的串行数据,当SCL时钟上升沿到来时,该串行寄存器就左移一位。当计数器时钟计数到8时,说明Master主机已经传输完了地址数据。该寄存器储存了8-bit的地址数据与读/写信号。
ACK1状态动作:I2C总线上的SDA/SCL两条总线都是双向传输,涉及到本Slave需要传输给主机也需要一个output(输出),该输出用于顶层中的三态门逻辑。该状态中,使该输出输出低电平。
NACK1状态动作:该状态表示该Slave并不是Master需要找的从机Slave,所以该状态会使输出变为高电平。表示主机传输来的地址与自身地址并不相符。
R状态动作:该状态表示主机Master需要读取从机Slave寄存器里的数据。该模块中有一个控制寄存器,该寄存器默认的储存值为默认通道的地址,该设计设定为通道15的地址。该模块需要串行传输控制寄存器的地址,该状态使输出的数据变为控制寄存器的数据。
W状态动作:该状态表示Master主机需要写该Slave,在这个时刻的“写”拥有特殊的含义,该模块中的控制寄存器要串行接受主机所传来的数据,该Slave的作用是打开下游的某个通道,那么这个通道的地址就是此刻主机Master传输的数据,也就是控制寄存器里8-bit数据。
ACK2状态动作:该状态表示主机已经完成对该Slave的写,那么此刻从机应该发送一个ACK信号表示已经接收到主机的数据,此时,该状态会把输出变为低电平。
NACK2状态动作:该状态表示主机已经对从机进行完了读这个操作,该从机等待主机发送停止信号或者启动信号。那么此刻,该状态会把输出变为高电平。
STOP状态动作:该状态表示,此时I2C总线上检测到了主机发送的停止信号,那么该状态会把输出变为高电平。
通过上述的各个状态动作,该模块可以完成该Slave的输出,对控制寄存器的输出,用于其他模块的使用。
DMUX选择模块
该模块的主要作用为,将Slave模块中的控制寄存器的数据进行使用,该模块中最重要的是三态门使能信号的使用,该使能信号来自于顶层,下文会详细说明。
如图4所示,该模块需要高频时钟CLK和来自Slave模块的控制寄存器的数据,三态门的使能信号。此模块中应有32个三态门,32条DOWN_SDA数据线和32条DOWN_SCL时钟线。该模块是本设计中的Slave与下游Slave的数据传输节点。
该模块的主要工作在于接受控制寄存器的数据,并与顶层传输的三态门使能信号进行判断,打开下游某个通道,让其与上游I2C总线相通信。
MUX32选择模块
顾名思义32MUX选择模块的作用是32选1,因为下游Slave输出回上游Master时会有32条数据线,好比DMUX一样,需要将其中一条数据线与其相对应的模块连接,使传回的数据能完整无误。
如图5所示,此模块需要32条输入和来自Slave模块的控制寄存器数据,输出一条被选中的数据线。该模块接受控制寄存器的数据,选择32条数据线中某一条与其输出数据线相连,没有被选中的数据线全部被拉高。
三态门模块
该设计最重要也是最困难的关键在于,I2C总线的双向传输,该设计运用了三态门。使用时序逻辑对三态门使能信号的控制,使I2C总线可以双向的传递。
如图6所示,该设计中包含了两个三态门逻辑,一个是上游三态门,一个为下游三态门。这两个三态门都用于控制Slave与I2C总线的传输。
顶层的三态门逻辑主要运用控制三态门的使能信号,来控制上游三态门与下游三态门。
上游三态门使能信号逻辑:该使能信号在此程序中名称为UP_EN,首先判断复位信号有没有开启,如果没有开启,再判断UP_EN信号是否为0,如果为0,再判断该有没有低电平信号输回,如果检测到低电平,那么就使UP_EN为1.如果UP_EN信号不为0时,再判断主机没有传输0并且从机传输了0回来,那么这时就使UP_EN信号为0.如果主机SDA数据线检测到了上升沿并且从机SDA数据线检测到低电平。那么这时就使UP_EN为0。
下游三态门使能信号逻辑:该使能信号在此程序中名称为DOWN_EN,该逻辑与上游三态门使能信号逻辑大致相同。首先判断复位信号有没有开启,如果没有开启,再判断DOWN_EN信号是否为0,如果为0,再判断上游SDA数据线是否为上升沿,如果是,那么就使DOWN_EN为1.如果DOWN_EN信号不为0时,再判断上游SDA数据线检测到下降沿并且下游从机传输了0回来,那么这时就使DOWN_EN信号为0.如果主机SDA数据线为低电平,下游从机SDA数据线检测到了上升沿。那么这时就使DOWN_EN为0。
在此设计中当上游与下游的三态门使能信号为0时,此设计相当于输出,当使能信号为0时,此设计相当于输入。
TestBench模块
该模块用于设计的验证,运用ModelSim软件来执行。该模块相当于一个仿真时使用的主机。它可以读或者写下游的从机,该模块中也有一个三态门,用于控制数据的双向传输。
该模块中,设定的了时序程序为,选通通道三,写通道三,读通道三。选通通道五,写通道五,读通道五。选通某个通道,可以在该模块中改写数据就可以达到。该模块简易的用硬件语言描写了一段简单的时序来检验设计模块是否达到所预想的功能。
该模块可以读或者写本设计的从机Slave也可以读或者写下游Slave从机。接受从机传回的数据做出相应的反应。
系统及仿真分析
仿真平台
基于FPGA的此设计,仿真平台选用的是ModelSim软件,进行时序仿真。经由平台的仿真,该设计可以完成预想的所有功能。
ModelSim是现阶段非常优秀的HDL语言仿真软件,它提供一个非常全面的仿真环境,可以支持硬件描述语言如Verilog与VHDL语言。它采用直接优化的编译技术,Tcl/Tk技术,和单一内核仿真技术。编译的时间非常短,编译速度非常快。也可以良好适用于很多代码编译器,有便于保护IP核,非常自主的界面可以供用户自动选择不同功能,为改错与校验工程提供了很方便的平台,是FPGA或者ASIC设计的首选仿真软件。
所有仿真结果不可避免的出现毛刺,这是由于数据和时钟之前形成的延时或者冲突导致的,这是仿真与设计中正常的表现。在此设计中并没有考虑毛刺的解决与时序延迟的解决方法,该设计只考虑模块的基本功能的完成。
仿真结果
由于下游Slave并不知道其功能,此仿真直接调用此设计Slave当做下游从机Slave。
由图7、图8可以看出,SDA数据线在SCL时钟线脉冲高电平时发生跳变,由此说明主机发出来启动信号,计数器每当时钟下降沿时计数一次,控制寄存器的数据为通道15的地址,当一次读写完成时,控制寄存器力度数据变为主机传送到数据。状态的跳转都可以在仿真中得以体现。由于该设计只考虑替代功能是否完善,所以直接调用该设计中的Slave来充当下游Slave,经过仿真,该替代模块能完成PCA9547芯片的基本功能。
通道仿真结果
由该设计的TestBench得出,该仿真会选通通道3,然后对通道3下游的Slave进行读和写。再选通通道9进行读和写,最后选通通道5进行读和写。由图9可以看出,下游通道DOWN_SDA[X]的其中某个通道确实被选通,并且完成了一个完整的I2C通信。
由于该设计下游可以拓展到接口达到32个通道,仿真在Testbench中进行了通道的选择与进行什么动作。至于扩展多少个通道,可以完全在程序中进行自主修改,非常简便。
控制寄存器仿真结果
由上图10可以看出,控制寄存器的数据在传输过程中会产生变化,变化的数值为主机传送来的通道地址。控制寄存器的原始数据为1000111,由于主机传输来的通道数据,控制寄存器数据有所改变,变成了主机传送来的10000101.完成了寄存器数据的变化。
应答信号仿真结果
下图为应答信号的仿真结果。
由图11可以应答信号的完整性,在该有应答信号出现的时刻应答信号在SDA数据线上都正确无误出现了。在ACK状态,NACK状态,SDA数据线上都能看到关于应答信号的改变。
从机数据仿真结果
由于SDA数据线的双向性,从机Slave也会传输数据给主机Master。
由图12也可以得到,SDA_Out包含了整个从机Slave的传回信号,UP_SDA_OUT代表了此设计中的Slave的传回数据。从仿真结果来看,该结果准确无误的展现了从机Slave传回的数据。
三态门使能信号仿真结果
三态门使能信号在顶层模块中的逻辑,使得上游与下游的数据得以双向传递。
由图13可得到,DOWN_EN与UP_EN分别为下游与上游三态门的使能信号,从仿真结果中可得到,三态门的状态,结合SDA数据线是时序,仿真结果完全正确。在顶层设计中实现了使能信号的逻辑运算。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的实施方法,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。

Claims (5)

1.一种基于FPGA的功能模块,其特征在于,包括:顶层模块;
顶层模块包括:DMUX选择模块、MUX32选择模块、从机Slave模块、逻辑模块、TestBench模块、下游从机模块和三态门模块;
DMUX模块:接收从机Slave传输的通道地址,进行地址的选择,并与顶层传输的三态门使能信号进行判断,打开下游某个通道,让通道与上游I2C总线相通信,从而使上游主机与下游被选择从机通信,这是与三态门逻辑信号共同完成其功能的;
MUX32选择模块:接收下游传输回的数据,进行通道选择,从而选择某通道数据进行传回;MUX32选择模块需要32条输入和来自Slave模块的控制寄存器数据,输出一条被选中的数据线;MUX32选择模块接受控制寄存器的数据,选择32条数据线中某一条与其输出数据线相连,没有被选中的数据线全部被拉高;
从机Slave模块:内部基于状态机方式设计,该模块的功能是芯片PCA9547功能最直观的体现;该模块具有从机接收器的功能,替代普通从机设备,接受主机地址数据,判断地址,回应应答信号,接受通道地址,所以也具有一个关键的作用就是能选通下游的某一个通道,传输通道地址于其他模块,被主机读取数据;
逻辑模块:是一种时序逻辑,使用此时序逻辑对三态门使能信号的控制,可以实现判断SDA数据线上的低电平信号是上游传输过来的还是下游传输过来的,然后再使能三态门,使I2C总线可以双向的传递;三态门使能信号在顶层进行时序逻辑编码设计,传输到DMUX模块与顶层模块中使用;
三态门逻辑模块:I2C总线的双向传输,运用了三态门;时序逻辑运用上游SDA数据与下游SDA数据得出三态门使能信号,这样使用时序逻辑对三态门使能信号的控制,使I2C总线可以双向的传递,也即完成SDA数据线的双向传输功能,三态门使能信号在顶层进行时序逻辑,传输到DMUX模块与顶层模块中使用;
TestBench模块:可以传输数据给从机,也可接受从机数据;仿真中使用,用于验证替代模块是否完成其功能;
下游从机模块:主要使用于仿真中,此仿真调用设计模块中的I2C_Slave模块来验证替代模块是否完成其功能。
2.根据权利要求1所述的一种基于FPGA的功能模块,其特征在于:顶层模块的输入输出接口分别为:
Reset:外部复位引脚,复位引脚低电平有效;
CLK:高频时钟,运用高频时钟能更加简便与更少误差实现设计;
A:外部7位地址引脚,芯片PCA9547外部3位地址引脚;
UP_SDA:I2C总线的SDA数据线,相当于I2C总线,主机上的I2C总线;
UP_SDA:I2C总线的SCL数据线,相当于I2C总线,主机上的I2C总线;
DOWN_SDA[0:31]:下游I2C的32条SDA数据线,下游的I2C;
DOWN_SCL[0:31]:下游I2C的32条SCL时钟线,下游的I2C。
3.根据权利要求2所述的一种基于FPGA的功能模块,其特征在于:从机Slave模块包括:地址寄存器、控制寄存器、状态机和计数器;
地址寄存器存放本Slave的地址数据,当从机接收到主机传来的地址数据,会将接收到的地址数据与地址寄存器相比较,如果相同说明主机访问的就是本从机Slave;
控制寄存器在默认情况下,会储存本Slave的数据,该数据具体由Slave决定;如果主机需要写从机,那么此Slave的功能就是将传输来的数据当做下游通道地址,并将该地址的通道打开,与上游连接;如果主机需要读从机Slave,那么该Slave会将控制寄存器里的数据传输给主机Master;
状态机里有许多状态,状态包括:UP_SDA_IN提供主机的SDA数据,UP_SCL_INT提供主机的SCL时钟,CLK提供高频时钟,A提供外部引脚地址,Reset提供外部复位引脚;状态机输出的上游的SDA数据用于连接下游的DOWN_SDA,Control_Reg输出用于连接选择器;通过状态,该从机Slave模块可以完成该Slave的输出,对控制寄存器的输出,用于其他模块的使用;
计数器用于当检测到启动信号时,每一个时钟脉冲的下降沿到来时,计数器就自增一,直到计数器增加到20,计数器会变回0,当检测到停止信号时,计数器也会变回0,意味着,计数器计数了20个时钟脉冲;计数器的作用在于状态的跳转条件。
4.根据权利要求3所述的一种基于FPGA的功能模块,其特征在于:所述三态门模块包括两个三态门逻辑,一个是上游三态门,一个为下游三态门;这两个三态门都用于控制Slave与I2C总线的传输;
顶层的三态门逻辑主要运用控制三态门的使能信号,来控制上游三态门与下游三态门;
上游三态门使能信号逻辑:该使能信号名称为UP_EN,首先判断复位信号有没有开启,如果没有开启,再判断UP_EN信号是否为0,如果为0,再判断UP_EN信号有没有低电平信号输回,如果检测到低电平,那么就使UP_EN为1,如果UP_EN信号不为0时,再判断主机没有传输0并且从机传输了0回来,那么这时就使UP_EN信号为0,如果主机SDA数据线检测到了上升沿并且从机SDA数据线检测到低电平;那么这时就使UP_EN为0;
下游三态门使能信号逻辑:该使能信号名称为DOWN_EN,该逻辑与上游三态门使能信号逻辑大致相同;首先判断复位信号有没有开启,如果没有开启,再判断DOWN_EN信号是否为0,如果为0,再判断上游SDA数据线是否为上升沿,如果是,那么就使DOWN_EN为1,如果DOWN_EN信号不为0时,再判断上游SDA数据线检测到下降沿并且下游从机传输了0回来,那么这时就使DOWN_EN信号为0,如果主机SDA数据线为低电平,下游从机SDA数据线检测到了上升沿;那么这时就使DOWN_EN为0;
当上游与下游的三态门使能信号为0时,相当于输出,当使能信号为0时,相当于输入。
5.根据权利要求4所述的一种基于FPGA的功能模块,其特征在于:TestBench模块用于设计的验证,运用ModelSim软件来执行;可以读或者写下游的从机,TestBench模块中有一个三态门,用于控制数据的双向传输;
TestBench模块中,设定的时序程序为,选通通道三,写通道三,读通道三;选通通道五,写通道五,读通道五;选通某个通道,在TestBench模块中改写数据就可以达到;TestBench模块简易的用硬件语言描写了一段简单的时序来检验设计TestBench模块是否达到所预想的功能;
TestBench模块可以读或者写本设计的从机Slave也可以读或者写下游Slave从机;接受从机传回的数据做出相应的反应。
CN201911318284.8A 2019-12-19 2019-12-19 一种基于fpga的功能模块 Active CN111078614B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911318284.8A CN111078614B (zh) 2019-12-19 2019-12-19 一种基于fpga的功能模块

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911318284.8A CN111078614B (zh) 2019-12-19 2019-12-19 一种基于fpga的功能模块

Publications (2)

Publication Number Publication Date
CN111078614A CN111078614A (zh) 2020-04-28
CN111078614B true CN111078614B (zh) 2023-05-09

Family

ID=70315765

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911318284.8A Active CN111078614B (zh) 2019-12-19 2019-12-19 一种基于fpga的功能模块

Country Status (1)

Country Link
CN (1) CN111078614B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111913899B (zh) * 2020-07-02 2022-02-08 山东大学 一种基于fsmc与fpga的uart拓展方法
CN112364582A (zh) * 2020-11-30 2021-02-12 国微集团(深圳)有限公司 一种用于三态门电路验证的改进方法、系统及装置
CN112860611B (zh) * 2020-12-28 2024-03-22 中国科学院合肥物质科学研究院 一种lvds转usb3.0多通道适配器
CN114253206B (zh) * 2021-11-18 2024-02-23 加弘科技咨询(上海)有限公司 可编程逻辑器件的透传结构及可编程逻辑器件

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0901081A2 (en) * 1997-07-08 1999-03-10 Texas Instruments Inc. A digital signal processor with peripheral devices and external interfaces
CN103870292A (zh) * 2012-12-13 2014-06-18 中国航空工业集团公司洛阳电光设备研究所 Fpga自动加载逻辑的装置及方法
CN106951377A (zh) * 2017-05-24 2017-07-14 南京典格通信科技有限公司 一种基于SoC支持多个I2C接口标准组设备的装置
CN108134599A (zh) * 2017-12-04 2018-06-08 山东高云半导体科技有限公司 一种i3c总线控制接口电路

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8554972B2 (en) * 2007-09-13 2013-10-08 Friedrich-Alexander-Universitaet-Erlangen-Nuernberg Logic chip, method and computer program for providing a configuration information for a configurable logic chip

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0901081A2 (en) * 1997-07-08 1999-03-10 Texas Instruments Inc. A digital signal processor with peripheral devices and external interfaces
CN103870292A (zh) * 2012-12-13 2014-06-18 中国航空工业集团公司洛阳电光设备研究所 Fpga自动加载逻辑的装置及方法
CN106951377A (zh) * 2017-05-24 2017-07-14 南京典格通信科技有限公司 一种基于SoC支持多个I2C接口标准组设备的装置
CN108134599A (zh) * 2017-12-04 2018-06-08 山东高云半导体科技有限公司 一种i3c总线控制接口电路

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"A novel SRAM-based FPGA architecture for defect and fault tolerance of configurable logic blocks";Farid Lahrach等;《13th IEEE Symposium on Design and Diagnostics of Electronic Circuits and Systems》;20101231;305-308 *
"基于FPGA的VEM总线Slave接口设计";赵建辉等;《测控技术》;20070228;50-55 *

Also Published As

Publication number Publication date
CN111078614A (zh) 2020-04-28

Similar Documents

Publication Publication Date Title
CN111078614B (zh) 一种基于fpga的功能模块
US8028210B2 (en) Semiconductor device
US8286025B1 (en) Selection of port adapters for clock crossing boundaries
CN107907814B (zh) 一种提高芯片量产测试效率的方法
US20080306722A1 (en) Logic verification system
US8239708B2 (en) System on chip (SoC) device verification system using memory interface
CN112115664B (zh) 一种多模式多时钟域的芯片集成控制系统
CN110515891B (zh) 一种fpga芯片及其配置方法
JP4599266B2 (ja) シミュレーション装置及びシミュレーション方法
JP2008226083A (ja) オンチップ・デバッグ・エミュレータおよびデバッグ方法並びにマイクロコンピュータ
CN103376340A (zh) 一种转接板、多平台串行测试系统及方法
US20070195716A1 (en) Ring bus in an emulation environment
CN113671360B (zh) I2c接口器件测试方法、装置及i2c接口器件
Yang et al. A configurable SPI interface based on APB bus
CN104866640A (zh) 一种全fifo电路设计方法及其通用验证平台
US20230064647A1 (en) Synchronization method and emulator
Mahale et al. Architecture Analysis and Verification of I3C Protocol
CN109753394B (zh) 一种实时调试固件配置信息的电路及方法
US7861197B2 (en) Method of verifying design of logic circuit
US20240012970A1 (en) Overstress design for verification
JP5145167B2 (ja) クロックドメインチェック方法及びクロックドメインチェック用プログラム並びに記録媒体
CN104657178A (zh) 一种采用接口技术进行fpga配置的方法
JP2009301192A (ja) シミュレーション装置およびシミュレーション方法
CN117971753A (zh) 一种通信方法及装置
US7114103B2 (en) System for finding and removing errors using a serial bus for a microcontroller

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant