基于VHDL的I2C总线控制核设计
[11-20 16:14:10] 来源:http://www.88dzw.com FPGA 阅读:8320次
文章摘要:SCL在Start命令的A状态时,保持原有电平不变,而在B状态时变为高电平,这样就可以实现Restart命令。系统时钟信号eclk由时钟尺度因子分频,得到状态转移的同步时钟使能信号(eclk_en)。在eclk和eclk_en的控制下进行状态移转,最后都转移到空闲状态(IDLE),并保持最后一个状态时的信号电平。图4中标注了每个命令的关键时刻。 3 中断信号的处理机制 I2C控制核作为I2C总线的主设备,是在DSP的控制下工作的。它采用中断机制与DSP通道。当一个读写命令完成后,主设备会向DSP发出一个中断申请信号eint(上升沿有效)。在DSP的中断服务程序中,置位命令寄存器的中断响应确认位
基于VHDL的I2C总线控制核设计,标签:fpga是什么,fpga教程,http://www.88dzw.comSCL在Start命令的A状态时,保持原有电平不变,而在B状态时变为高电平,这样就可以实现Restart命令。系统时钟信号eclk由时钟尺度因子分频,得到状态转移的同步时钟使能信号(eclk_en)。在eclk和eclk_en的控制下进行状态移转,最后都转移到空闲状态(IDLE),并保持最后一个状态时的信号电平。图4中标注了每个命令的关键时刻。
3 中断信号的处理机制
I2C控制核作为I2C总线的主设备,是在DSP的控制下工作的。它采用中断机制与DSP通道。当一个读写命令完成后,主设备会向DSP发出一个中断申请信号eint(上升沿有效)。在DSP的中断服务程序中,置位命令寄存器的中断响应确认位(i_ack_r='1'),使主设备清除其发出的中断申请信号(eint='0'),而i_ack_r信号将在置位命令结束后的下一个时钟上升沿自动清除。这样,可以允许主设备发出下一个中断申请。
图5
process(nReset,eclk)begin
if(nReset='0')then
int<='0';i_ack_r<='0';
elsif(eclk'vent and eclk='1')then
if(nce='0'andnAwe='0')then
if(core_en='1'and eadd="001")then
--写入命令寄存器
i_ack_r<=cr(7);--写入'1'
end if;
else
i_ack_r<='0'; --自动清除
end if;
int<=cmd_done_ack and ien;
end if;
Eint<=int and(not i_ack_r_;
end process;命令码
4 EDA综合结果与结论
使用Xilinx ISE6.1对I2C核的VHDL描述进行综合(synthesize)和实现(implement),目标器件采用Xilinx公司的高密度系统级FPGA-Virtex系列芯片v50cs144-6。设计的总体等效门数为1844门,系统时钟的最大频率为120.758MHz。图5为使用ModelsimXE5.6a对在目标器件上布局布线后的VHDL模块进行仿真(Simulate Post-Place & Route VHDL Module)的结果。其中,edat信号上“10010000”中的“1”依次是启动和写命令;“01100001”中的“1”依次是停止、读、中断清除命令。从图中可以看出,实现了从TMS320C6000 EMIF接口到I2C总线接口的转换功能,并实现发中断申请(eint=1)和清除中断申请的功能,完成了I2C总线通信协议的启动、写、确认,读、确认、停止操作的时序。
《基于VHDL的I2C总线控制核设计》相关文章
- › 基于VHDL 的矩阵键盘及显示电路设计
- › 基于VHDL的可变速彩灯控制器的设计
- › 基于VHDL的图像传感器TCDl206的驱动设计
- › 基于VHDL的99小时定时器设计及实现
- › 基于VHDL语言的按键消抖电路设计及仿真
- › 基于VHDL的I2C总线控制核设计
- 在百度中搜索相关文章:基于VHDL的I2C总线控制核设计
- 在谷歌中搜索相关文章:基于VHDL的I2C总线控制核设计
- 在soso中搜索相关文章:基于VHDL的I2C总线控制核设计
- 在搜狗中搜索相关文章:基于VHDL的I2C总线控制核设计