17088a是什么尺码男装| 人中长痘痘什么原因| 捋捋是什么意思| 面瘫是什么意思| 纸醉金迷什么意思| 世界上最小的动物是什么| 医生说宝宝趴着在暗示着什么| 6月5日是什么日| 什么食物对肺有好处| uw是什么单位| 形声字是什么意思| 脑梗是什么原因造成的| 鸽子公主是什么意思| 属牛幸运色是什么颜色| 郭字五行属什么| 腮腺炎用什么药| 胃糜烂可以吃什么水果| 低密度脂蛋白高吃什么药| 田童念什么| 右手发抖是什么原因| yonex是什么品牌| 耳垂长痘痘是什么原因| 三个为什么| 口干口苦口臭是什么原因引起的| 梦见自己搬家是什么意思| 健忘症是什么意思| 嘴唇黑是什么原因| 气血不足吃什么补得快| 二月一日是什么星座| 孕妇血糖高对胎儿有什么影响| 炖鸡放什么材料| 草莓印是什么意思| 龟头炎看什么科| 杜甫是什么朝代的| 吃斋是什么意思| 消化内科是看什么病的| 子宫腺肌症是什么意思| 蜘蛛痣是什么原因引起的| 什么满园| 日落是什么时辰| 睾丸皮痒用什么药| 蚊子代表什么生肖| 酒后手麻什么原因| 前列腺炎不能吃什么| 痒是什么原因引起的| 眉毛中间长痘痘是什么原因| 纳米是什么单位| 什么的微风填空| 心灵的洗礼是什么意思| 鸽子红鼻头喂什么药| 骨蒸潮热是什么意思| 老打喷嚏是什么原因| 二郎神是什么动物| 睡眠不好吃什么好| 吃什么食物对胰腺好| 足跟血筛查什么疾病| 子宫内膜异位症有什么症状表现| 独一无二指什么生肖| 六月初一什么日子| 湿气重的人不能吃什么| 扩心病是什么病| 走青是什么意思| 多囊什么意思| 地球为什么是圆的| 胰岛素偏高是什么意思| 孕检无创是检查什么的| 节节草有什么作用| 肺部有阴影一般是什么病| 什么鸟叫声最好听| 8月24是什么星座| 乙肝表面抗原高是什么意思| 什么叫指标到校| 夸瓜读什么| 位移是什么| 炒菜用什么油比较好| 颈部有肿块挂什么科| 下象棋有什么好处| 依字五行属什么| 红细胞高是什么意思| 胃上面是什么器官| c3是什么| 6月22号是什么星座| 船舷是什么意思| 豆汁是什么做的| 青云志是什么意思| 湿气重喝什么茶好| 冥是什么意思| 切诺为什么要饭前半小时吃| 老流鼻血是什么原因引起的| 心疼是什么原因| 藏海花是什么花| 什么是干燥综合症| 动脉导管未闭对宝宝有什么影响| 幼小衔接都学什么知识| 小猫的胡须有什么作用| apl是什么意思| 石楠花是什么味道| 急性乳腺炎是什么原因引起的| 什么是形而上学| 什么是出马| 眉毛上的痣代表什么| 经期洗澡有什么影响| 头顶疼是什么原因引起的| 藏红花泡水是什么颜色| 藿香泡水喝有什么好处| 死缓什么意思| mfd是什么意思| 恋恋不舍的意思是什么| 脑血管狭窄吃什么药| 怀孕初期吃什么| 什么叫辟谷| 十指不沾阳春水什么意思| 腰腿疼痛吃什么药效果好| 忌口是什么意思| 芭乐是什么水果| 农历3月14日是什么星座| 嘴巴发苦是什么原因| 手指甲发白是什么原因| 射手属于什么象星座| 无花果有什么营养| 阴囊瘙痒用什么药| 相知相惜是什么意思| 春什么秋什么| 胎儿肠管扩张是什么原因造成的| 胃穿孔是什么原因引起的| 肌酐清除率是什么意思| 为什么英文怎么说| 脂肪肝吃什么好| 炖什么汤对肺部最好| 关羽的武器叫什么| 柠檬水喝了有什么好处| 九月九日是什么日子| 落拓是什么意思| itp是什么| 吃槟榔有什么好处和坏处| 41年属什么生肖| 羽字属于五行属什么| 化作风化作雨是什么歌| 现在干什么挣钱| 抑郁症是什么原因造成| 30岁以上适合用什么牌子的护肤品| 肠衣是什么做的| 1922年属什么生肖| 金今念什么| 维生素检查项目叫什么| 什么地叹气| 2b什么意思| 为什么不建议吃大豆油| 头痛头晕挂什么科| c13阳性是什么意思| 潮汐车道什么意思| 网罗是什么意思| 曜字五行属什么| 老鼠属于什么类动物| 河南人喜欢吃什么| 七月二十五是什么星座| 扁桃体发炎咳嗽吃什么药效果好| 经血粉红色是什么原因| 阿托伐他汀钙片治什么病| 毛周角化症是什么原因引起的| 林彪为什么反革命| 涩是什么意思| 腰椎退行性变是什么意思| 跌打损伤用什么药最好| 麾下什么意思| 莲藕炒什么好吃| 圣人是什么意思| 甘少一横读什么| 手麻抽筋是什么原因引起的| 歧途什么意思| 吐司是什么意思| 视力sca分别代表什么| 乙肝两对半25阳性是什么意思| 丁克是什么意思| 未分类结晶偏高是什么意思| 达摩是什么意思| 六尘不染的生肖是什么| 6月22日是什么星座| 什么食物维生素A含量高| 97年五行属什么| 烦恼是什么意思| 心肌酶高是什么意思| 13岁属什么生肖| 才美不外见的见是什么意思| 梦到怀孕生孩子是什么意思| 2015年属什么生肖| 文盲是什么意思| 一个王一个番读什么| 糖耐量异常是什么意思| 探店是什么意思| 甲醇和乙醇有什么区别| 月相是什么意思| 自带bgm是什么意思| 为什么胃有灼热感| 什么人不能念阿弥陀佛| 很man是什么意思| 猎头是干什么的| 吃完羊肉不能吃什么水果| lemon是什么意思| 撰稿是什么意思| 总是低烧是什么原因造成的| 等字五行属什么| 什么是地沟油| 晋字五行属什么| 大便拉不出来什么原因| peb是什么意思| 爱是什么意思| 白细胞低吃什么补| 吃月饼是什么生肖| 97年什么命| 粉丝炒什么好吃| 富字五行属什么| 平血头晕吃什么药最好| 一个木一个西读什么| 开柙出虎是什么意思| 放疗化疗有什么区别| 男友力是什么意思| 朋友圈提到了我是什么意思| 凿壁偷光是什么意思| ex是什么| pml是什么意思| 宝宝肋骨外翻是什么原因| 16开是什么意思| 92年出生属什么生肖| 肉桂属于什么茶类| 处女男和什么星座最配| 11点到12点是什么时辰| 老花眼视力模糊有什么办法解决吗| lpa是什么意思| 脚底出汗是什么原因| 肠息肉吃什么药| 高祖父的爸爸叫什么| 什么是预科班| 牙痛安又叫什么| 白细胞和血小板高是什么原因| 鸡汤炖什么菜好吃| 10月15日是什么星座| 梦见战争是什么兆头| 百合吃了有什么好处| 不能吃辛辣是指什么| 哺乳期吃辣椒对宝宝有什么影响| 红眼病是什么原因引起的| 舌苔厚白吃什么食物好| 白带是黄色是什么原因| 属猪男和什么属相最配| 恻隐之心什么意思| 肠胃不舒服挂什么科| 脑供血不足是什么症状| 高血压可以吃什么| 土豆什么时候种植| 晚上睡觉脚抽筋是什么原因| 总胆固醇偏高吃什么药| 常州有什么特产| 生理需要是什么意思| 脂溢性脱发用什么洗发水好| 波子是什么车| 鸡为什么吃自己下的蛋| 筋膜炎是什么| 为什么肚子会胀气| 指甲上的白色月牙代表什么| 小腹右边疼是什么原因| 梦见着火是什么预兆| 1963年五行属什么| cpk是什么意思啊| 百度

新闻中心

EEPW首页 > 汽车电子 > 设计应用 > I2C总线控制器的VHDL设计及实现

长春市开展交通秩序综合整治行动

作者:■ 迈瑞医疗电子公司 郑俭锋 时间:2025-08-04 来源:eaw 收藏
百度 昨日下午,深圳市南山区人民检察院作出不予批捕的决定,警方亦撤销该案,小涂被无罪释放,不会留下案底。

摘    要:本文用设计了一个简洁而实用的控制器,介绍了详细的设计思路和在中的实现,并给出了在嵌入式系统设计中的使用方法。
关键词:

引言
以其接口简单、使用灵活等突出优点在数字系统中获得了广泛的应用。尤其在嵌入式系统中,I2C总线被普遍用来连接CPU/MCU和外围器件。I2C总线规范经过十几年的实践,发展了多层标准。从传输速率上划分,有标准模式(100Kbit/s),快速模式(400Kbit/s),高速模式(3.4Mbit/s);从寻址范围上划分有7位地址模式和10位地址模式。本文使用语言设计的控制器模块采用标准速率、7位地址的模式,主要应用在嵌入式系统中,给CPU/MCU提供一个操作I2C器件的简易平台,以弥补某些CPU/MCU功能的不足。

功能定义
I2C总线的接口非常简单,只需一根数据线(SDA)和一根时钟线(SCL)。I2C器件可以工作于主件(Master)模式和从件(Slaver)模式,但I2C总线上同时只能有一个主件和多个从件,每次传输规定由主件发起,通过从件地址(Slaver Address)访问从件。设计时本着简单实用的原则,限定本模块只工作于Master模式。
端口定义
entity I2C_CTRL is
 port(
 -- 系统信号
 nReset: in STD_LOGIC;-- 系统复位信号端
 CLK: in STD_LOGIC; -- 内部系统时钟端
 -- 控制信号
 ADRS: in STD_LOGIC_ VECTOR(4 downto 2); -- 地址线,3位(8个32位地址)
 Din: in STD_LOGIC_ VECTOR(7 downto 0); -- 数据输入线,8位
 Dout: out STD_LOGIC_ VECTOR(7 downto 0); -- 数据输出线,8位
 nCS: in STD_LOGIC; --片选使能端
 nWR: in STD_LOGIC; --写使能端
 -- I2C总线信号
 SDA: inout STD_LOGIC; --串行数据输入输出端,输出有三态
 SCL: out STD_LOGIC --时钟输出端,三态输出
 );
end I2C_CTRL;
寄存器定义
本模块的寄存器定义参照Motorola公司ColdFire系列MCU MCF5307的I2C控制器,共定义了3个寄存器,长度均为8位,采用32位编址,如表1所示。
时序状态机
本模块根据I2C总线规范的时序标准(见图1),划分一个传输周期为8个状态,状态转换如图2所示。

进程设计
本模块全部采用同步时序设计。VHDL时序仿真见图3,限于篇幅,不提供VHDL原程序。下面只对每个进程的关键点进行说明。
时钟进程
本模块设定FPGA分配给I2C模块的系统时钟(CLK)为20MHz,而标准模式的I2C总线操作速率(SCL的速率)为100KHz,需要对系统时钟进行分频。基于VHDL的同步设计需要,本地时钟频率必须为SCL速率的整数倍,本模块取两倍值,因此本地时钟频率设为200KHz。定义6bit定时器timer,对系统时钟的上升沿进行计数。
系统复位时timer清零。当CLK上升沿时,timer值减1。当timer=0时赋值100,对20MHz的系统输入时钟进行100分频产生200KHz的本地时钟。
为满足对总线的运行状态进行进一步的细分,使用一个5bit的step信号对运行进度进行计数,每个本地时钟到达时,step加1。
CPU读寄存器进程
系统复位时Dout端口清零。在片选信号nCS有效的情况下,当CLK上升沿时,对地址总线ADRS译码,把指定地址的寄存器内容送到Dout端口。
CPU写寄存器进程
系统复位时,初始化I2CR和I2DO。在片选信号nCS和nWR同时有效的情况下,当CLK上升沿时,读取Din端口的信号,存入被ADRS译码选中的寄存器。
状态标志改写进程
系统复位时,初始化状态标志。运行时根据状态机和step的值改写状态标志。其中I2SR[IIF]因为同时可以由CPU改写,安排另外一个独立的进程。
状态机赋值进程和状态机转换进程
系统复位时,状态为IDEL。当检测到MSTA=1时,进入START状态,保持4个本地时钟周期,进入READY状态,根据MTX的值,进入SENDING或RECEVING状态,等待ICF=1时,表明传输结束,进入WAITING状态。根据IIF或者MSTA是否被清除,决定继续下一个传输或者退到STOP状态。STOP状态保持3个本地时钟周期,返回IDEL状态。
SCL线进程和SDA线进程
系统复位时SCL线输出高阻,运行时按照状态机和step的值改写SCL线。当进入传输状态(SENDING或RECEIVING)时,step[0]=0输出高阻,step[0]=1输出低电平。
系统复位时SDA线输出高阻,运行时按照状态机和step的值读写SDA线。

在FPGA中的实现
本I2C控制器模块全部采用可综合的VHDL语言设计,通过Mentor公司的Leonardo Spectrum工具综合,并在Altera公司的Cyclone FPGA中实现布线。
Leonardo Spectrum 2003b65综合的结果是:
Device Utilization for EP1C6Q240C
Resource                Used    Avail   Utilization
IOs                     25      181      13.81%
LCs                     171     5980      2.86%
Memory Bits         0       92160     0.00%
          Clock Frequency Report
 Clock                : Frequency
 CLK                  : 211.8 MHz
此处作为一个单独的模块进行综合,因此上述结果I/O口占用率包括了地址、数据总线和时钟线等,实际使用时作为一个子模块,这些信号线都在FPGA内部。

模块的使用说明
本模块适合应用在嵌入式系统中,作为CPU/MCU连接I2C器件的一个桥接器,使得CPU可以像操作普通存储器一样控制I2C器件。下面补充说明CPU/MCU操作本模块的使用方法。
1) 每发起一次传输都必须先对I2C器件进行寻址。不管是要从I2C器件里接收还是发送数据,都必须先设置I2CR[MTX]以标明是一个发送任务,并在I2DR中填入要寻址的I2C器件的Slaver地址,再发送“开始传输”指令。只有在传输完地址之后,再按需要改写I2CR[MTX]位来实现接收或者发送。如果发送地址之前就试图读写I2C总线将得不到预期的结果。
2) 在一次传输完成之后,将置位中断标记I2SR[IIF]。中断标记必须由软件清除,在标记被清除之后,控制器将自动读取I2CR,进行下一轮传输。如果要改变传输方式,应该在清除中断标记I2SR[IIF]之前改写I2CR寄存器。
3) 对reSTART指令的执行与I2C总线协议规范不尽相同。只有在传输指令没有被结束(即在发送reSTART指令之后没有发送过STOP指令)的状态下设置I2CR[RSTA]才能产生一个reSTART指令,否则无效。而且每次需要reSTART操作时,必须再次重复设置I2CR[RSTA]才能生效。这样解释reSTART指令的目的是,可以方便实现一些EEPROM器件的“选择/任意读数”模式。

结语
本文设计的I2C控制器非常适用于以“MCU+FPGA”为模式的嵌入式系统中。当MCU不具有I2C控制功能,而使用I/O口模拟又占用较多资源时,用FPGA实现对I2C器件的控制成为最理想的选择。通常这种情况下,针对在I2C总线的地位来说,MCU只需担当主件(Master模式),I2C器件只充当从件(Slaver模式),而且一般的器件都只工作于标准速率。因此,若采用FPGA厂商提供的标准I2C控制器IP,会造成资源浪费。而自行设计一个控制器就显得更为经济实用了。■

参考文献
1 The I2C-Bus Specification, Version 2.1, Philips Semiconductors, 2000.1
2 MCF5307 ColdFire Integrated Microprocessor User誷 Manual, Rev 2.0, Motorola, Inc., 2000.8



关键词: FPGA I2C总线 VHDL

评论


相关推荐

技术专区

关闭
为什么针灸后越来越痛 地级市市长是什么级别 贫血打什么针效果最好 百鸟归巢什么意思 帛书是什么意思
恐惧是什么意思 医保卡什么样子 空鼻症是什么症状 午安是什么意思 犹太人为什么叫犹太人
阴阳两虚用什么药 包茎不割会有什么影响 游乐场都有什么项目 王菲属什么生肖 悬雍垂发炎吃什么药
roa胎位是什么意思 吃百家饭是什么意思 野猫吃什么 bmi是什么意思 离岸人民币什么意思
智商什么意思hcv8jop7ns9r.cn 1956年属什么生肖hcv8jop4ns2r.cn hpv是什么症状hcv8jop6ns5r.cn 为什么泡完脚后非常痒hcv7jop5ns4r.cn 尿道炎吃什么药最好hcv9jop3ns3r.cn
梦见火烧房子是什么预兆hcv7jop6ns3r.cn 军国主义是什么意思hcv9jop6ns2r.cn 场所是什么意思hcv8jop5ns2r.cn 什么植物和动物像鸡tiangongnft.com 一产二产三产分别包括什么hcv9jop7ns5r.cn
天秤座和什么座最配hcv8jop0ns3r.cn 孕妇梦见下雪是什么征兆hcv7jop7ns3r.cn 三皇五帝是什么时期hcv8jop6ns4r.cn 肺的主要功能是什么hcv8jop4ns4r.cn 不讲武德什么意思inbungee.com
什么情况下需做肠镜hcv9jop3ns7r.cn 大咖什么意思hcv8jop5ns7r.cn o型血是什么血型hcv8jop4ns9r.cn 碳酸盐是什么hcv8jop0ns3r.cn 外感风寒是什么意思hcv9jop1ns0r.cn
百度