Menu Close

I2C 应用层 Verilog程序组装

在完成iic_cmd 层设计后,就需要上层应用程序发送操作给cmd层。在结构化设计中, 我们需要将iic_cmd,iic_phy,scl_en 等模块封装一起,称为iic_engine 模块,这样iic_engine 模块就可以独立使用了, 应用层有多种多样,但都是可以调用iic_engine 。本文中使用iic_app 模块作为i2c 的应用层。在iic_app 中,只有数据包的发送和接收, 再没有和i2c phy相关的具体操作了,完全是数据的传输。在结构化设计中,结构框图如下:

 

图1

从图1中可以看出, iic_app层与数据相关,只是安装接口协议写入或者读取相应的数据到iic_engine,不负责i2c 的具体操作。 iic_engine 负责i2c 的具体操作,但是命令是由上层(iic_app)来提供的。

1 iic_app 层代码:

 

图2

状态0:初始化, 等待65535 个时钟周期,主要用于仿真,方便观察,跳转到状态1

状态1:读取二维数值中的数据,如果数组不为0, 表示当前命令有效,发送数据到cmd 层,跳转到状态2

状态2:等待cmd 层返回pkg_din_ack 信号, 发送下一笔数据,直到发送的数据个数等于 pkg_len,跳转到状态3

状态3:等待cmd 层返回pkg_end, 指针指向下一条命令, 跳转到状态1。


 

仿真

图3

 

 

Posted in FPGA, FPGA 教材教案, Verilog, 教材与教案