信息与通信]带有源代码基于fpga的模拟i2c接口设计与实现内容摘要:
y t e_R eadPage_W rit ePage_R eadsclac k f lag[ 2. . 0]out dat a[ 7. . 0]s daI I C _I nt erf ac e_Busins tn1 100000 S i g n e d In t e g e rP a r a m e t e r V a l u e T y p ec lkres et _nda t ain [ 7. . 0]ac k f lag [ 2. . 0]s eg _d at a[ 7. . 0]s eg _c om [ 3. . 0]Led_Seg_D is playins t 4VCCk e y _ w i d 4 S i g n e d In t e g e rn2 500000 S i g n e d In t e g e rP a r a m e t e r V a l u e T y p ec lkrs t _nk ey _in[ k ey _w id1. . 0]k ey _out [ k ey _w id1. . 0]Sy n_SignKey F ilt er_C hec kins t 7k ey v alue[ 0]k ey v alue[ 1]k ey v alue[ 2]k ey v alue[ 3]k ey v alue[ 3. . 0] 图 13 硬件模块总体电路图 2. 2 IIC 模块 的 verilog HDL 代码设计 本 IIC 模块 的 软件设计是基于 QuartusII9. 0 建立 Division_1_500HZ ,IIC_Interface_Bus , KeyFilter_Check , Led_Seg_Display 等 Verilog HDL 文件。 由于 IIC 总线传输协议可知 , IIC 在传输过程中存在着几个固定的状态 ,因此我们采用同步状态机来设计 IIC 模块。 主状态机 从的大的方面 共有 5个状态 :空闲 (Idle) , 开始 (Start) , 发送数据 (Tx), 接收数据 (Rx), 停止 (Stop)。 但是具体细分后 的状态有 17 个,它们的具体功能 及地址分别 如下。 IDLE: 1739。 b0_0000_0000_0000_0001。 // IIC 总 线处在空闲状态 START1: 1739。 b0_0000_0000_0000_0010。 //当 scl 信号为高电平 , sdl 由高电平 13 到低电平变化 时开始运作 IIC 模块 , 且根据 (r/ w)判断进入下一状态 ADD1: 1739。 b0_0000_0000_0000_0100。 //写入器件地址 ACK1: 1739。 b0_0000_0000_0000_1000。 // 写入器件地址 后的 应答 ADD2: 1739。 b0_0000_0000_0001_0000。 //写入字节地址 ACK2: 1739。 b0_0000_0000_0010_0000。 // 写入字节地址 后的 应答 START2: 1739。 b0_0000_0000_0100_0000。 //读操作开始前的起始信号 ADD3: 1739。 b0_0000_0000_1000_0000。 //写入器件地址 ACK3: 1739。 b0_0000_0001_0000_0000。 //应答 状态 ACKR: 1739。 b1_0000_0000_0000_0000。 //fpga 给应答 状态 DATA: 1739。 b0_0000_0010_0000_0000。 //字节读写 状态 PAGER: 1739。 b0_0000_0100_0000_0000。 //页读 状态状态 PAGEW: 1739。 b0_0000_1000_0000_0000。 //页写 状态 ACK4: 1739。 b0_0001_0000_0000_0000。 //应答 状态 HIGH: 1739。 b0_0010_0000_0000_0000。 //高电平 状态 STOP1: 1739。 b0_0100_0000_0000_0000。 //停止位 状态 ( 当数据传输完毕 , 跳入STOP1 状态。 ) STOP2: 1739。 b0_1000_0000_0000_0000。 //延时同步 由上面的 17 个 状态 组成的状态 转移图如图 14 所示。 14 图 14 IIC 模块主状态机状态转移图 3 IIC 接口 模块的 功能 实物 测试 (基 于 EP2C20Q240C8) 根据 IIC 协议中传输过程的特点, IIC 模块可以划分为字节发送模块、字节接收模块、开始条件模块、停止条件模块。 其中,字节发送模块、字节接收模块和停止条件模块为基本模块。 在 开始条件模块中,因为需要发送从器件地址,所以要调用字节发送模块。 下面给出用 Verilog HDL 语言实现字节发送模块的关键程序。 相关变量的声明在此略去。 程序 在 环境 下编译、调试、仿真。 然 后将生成的 .sof文件下载到 EP2C20Q240C8 目标板上进行实物测试,得到如下的测试图。 IDLE START1 ADD1 ACK1 ADD2 ACK2 START21 DLE ADD3 ACK3 ACKR DATA HIGH PAGEW PAGER STOP2 STOP1 ACK4 15 图 15 写一个 字节为十进制 78 的 字节 操作 图 16 连续写 2 个字节 (十进制 2 32)的页操作 16 4 IIC 接口 模块 设计的改进 由于 24C01/02/04/08/16 器件可以不考虑应答位, 所以本次设计中没有设定应答接口,因此没有进行仿真测试,所编写的 IIC 接口模块的 Verilog HDL 代码是可综合的,仅仅是将此代码直接下载到 altera 公司 EP2C20Q240C8 器件 中后,进行 了 实物模拟 IIC 总线接 口功能 ,基本实现项目要求。 为此我们将 IIC 模块 设计进行改进, 可以 达到 直观地利用时序图来观察 IIC总线接口协议 的目的 , 可以观察本设计是否满足 IIC 总线接口功能。 具体的操作是:可以 实例化了两个模块 master(主机) 和 slave(从机) ,并设计了顶层模块调用 master 和 slave ,使用了 进行了仿真。 从图 17和图 18 明显可知 ,当 master 的 drive 线置高电平且 r/w 线为低电平时 , IIC 模块运作 ,产生起始信号 Start ,且在 sda 线发送 8 位数据 ,且在 scl 线发送 9 个时 钟脉冲信号 ,等待 相应信号 mcf ,若 slave 响应 ,则 mcf 为高电平 ,继续发送下一字节数据 ,直到产生终止信号 Stop ,sda 线和 scl 线置高电平 ,发送数据终止 ,等待下一个起始信号 Start。 同样的 ,当 slave 的 drive 线置高电平时 , IIC 模块运作 ,r/w 线为 ’1’时接收数据功能启动。 当 mcf 为 ’1’时 ,slave 响应 master ,且在这时刻才能保证接收数据的准确性 ,当出现终止信号 Stop 时数据接收终止 ,等待下一个起始信号 Start。 图17 和图 18 准确反映了 master 发送 3 字节数据和 slave 准确接收 3 字节数据的功能。 图 17 master 时序仿真图 图 18 slave 时序仿真图 17 参考文献 [1] 夏宇闻 . Verilog 数字系统设计教程 [ M ] . 北京航空航天大学出版社 , 2020. [2] 何立民 . IIC 总线应用系统设计 [ M ] . 北京航空航天大学出版社 , 2020. [3] 吴继华 , 王诚 . Altera FP GA/ CPLD 设计 (高级篇 ) [ M ] . 人民邮电出版社 ,2020. [4] 路永坤.用 Verilog HDL 实现 IIC 总线功能[ J].:电子技术应用 , 2020. [5] IIC 总线规范[ E].:电子技术论坛, 2020. 18 附录 部分源代码 /************************************************************************************/ //IIC 接口时序模拟部分 module IIC_Interface_Bus( clk, rst_n, Syn_Sign, Byte_Write, Byte_Read, Page_Write, Page_Read, scl, sda, ackflag, outdata )。 /************************************************************************************/ //AT24C08 的地址和数据 , 根据硬件进行更改 . `define DEVICE_READ 839。 b1010_0001//被寻址器件地址(读操作) `define DEVICE_WRITE 839。 b1010_0000//被寻址器件地址(写操作) /******************************************************************** 19 ****************/ //写入 EEPROM 的数据 `define WRITE_DATA0 839。 d78//839。 b0110_0010 0x62 `define WRITE_DATA1 839。 d32//839。 b0010_0001 0x21 `define WRITE_DATA2 839。 d26//839。 b0100_0011 0x43 `define WRITE_DATA3 839。 d79//839。 b0110_0101 0x45 `define WRITE_DATA4 839。 d43//839。 b1000_0111 0x87 /************************************************************************************/ `define BYTE_ADDR 839。 b0000_0100 //要写入 /读出 EEPROM 的地址寄存器 /************************************************************************************/ /************************************************************************************/ input clk。 //50MHz input rst_n。 //复位信号,低电平有效 input Syn_Sign。 //同步信号 input Byte_Write, Byte_Read, Page_Write, Page_Read。 //按键 1 按下执行写入操作, 2 按下执行读操作, 3 按下执行连写操作 , 4 按下执行连读操作 output scl。 //AT24C08 的时钟端口 inout sda。 //AT24C08 的数据端口 20 output [2:0]ackflag。 //后面显示接收到数据的标志 output [7:0] outdata。 //数码管显示的数据 /************************************************************************************/ //分频部分 , 通过分频获取串行总线器件的时钟信号 reg[2:0] t。 //t=0:scl 上升沿, t=1:scl 高电平中间, t=2:scl 下降沿,t=3:scl 低电平中间 reg[8:0] t_delay。 //500 循环计数,产生 iic 所需要的时钟 100khz Max:400KHZ reg scl_r。 //时钟脉冲寄存器 parameter pre_t = 500。 // /************************************************************************************/ always @ (posedge clk or negedge rst_n) if(!rst_n) t_delay = 939。 d0。 else if(t_delay == 939。 d499) t_delay = 939。 d0。 //计数到 10us 为 scl 的周期,即 100KHz。信息与通信]带有源代码基于fpga的模拟i2c接口设计与实现
本资源仅提供20页预览,下载后可查看全文
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。
相关推荐
高三政治政权组织形式
政府对议会负责 相互独立,议员不能 兼任政府官员,政府 官员也不能兼任议员 比较 李瑞环会见新加坡总统 李瑞环会见意大利总统 江泽民会见新加坡总理 江泽民会见意总理阿马托 美国 (总统制共和制) 政府机构 行政 立法 司法 总统办事机构 内阁 独立机构 国务院 国防部 财政部 司法部 内务部 农业部 商务部 劳工部 教育部 能源部 交通部 卫生及公共服务部 住房和城市发展部 退伍军人事物部 国会
高三物理磁场的综合应用
这台加速器由两个铜质 D形盒 DD2构成 , 其间留有空隙 , 下列说法正确的是 ( ) A. 离子由加速器的中心附近进入加速器 B. 离子由加速器的边缘进入加速器 C. 离子从磁场中获得能量 D. 离子从电场中获得能量 B D1 D2 A D19. 图是质谱仪工作原理的示意图。 带电粒子 a、 b经电压 U加速 ( 在 A点初速度为零 ) 后 , 进入磁感应强度为 B的匀强磁场做匀速圆周运动
高三政治我国国家制度
家决定其 国家机构 是剥削阶级统治的工具;社会主义国家的性质决定其 国家机构 是为工人阶级和人民所掌握并为之服务的。 • 13国家机构与国家职能的关系 • 分析 • 国家的各种职能都需要一定的国家机关来执行。 不同的国家机关履行不同的国家职能。 • 国家职能是国家机构设置的主要根据,国家机构是实施国家职能的载体。 • 国家机构根据国家职能的需要而随着调整。 (国务院机构改革) 国家机构组织体系