数据接收模块程序
数据接收模块程序如图2
`timescale 1 ns/100 ps
module iic_wreg(data, addr, rst_l, clock, scl_cnt_en, rd_wr_l, cs_l, wrd_add,iic_go, ack_l); //端口列表
inputdata;//处理器输出的数据码
inputaddr;//处理器输出的地址码
input rst_l;//复位信号
input clock;//系统时钟
input cs_l, scl_cnt_en;//系统使能信号
input rd_wr_l;//命令信号
outputwrd_add;//字地址
output iic_go;//iic总线启动信号
output ack_l;//反馈给处理器的响应信号
//寄存器型
reg wrd_add;
reg iic_go;
reg ack_l;
//寄存器参数
parameter w_add=2'b00;//地址寄存器
parameter d_add=2'b01;//数据寄存器
parameter s_add=2'b10;//状态寄存器
always@(posedge clock or negedge rst_l)
if(!rst_l)
wrd_add <= #1 8'b0;
else if(cs_l&&!rd_wr_l&&(addr= =w_add))
wrd_add <= #1 data;
always@(posedge clock or negedge rst_l)
if(!rst_l)
iic_go<= #1 1'b0;
else if(cs_l&&!rd_wr_l&&(addr= =w_add))
iic_go<= #1 1'b1;//iic总线的启动信号
else if(scl_cnt_en)
iic_go<= #1 1'b0;
//反馈响应信号
always@(posedge clock or negedge rst_l)
if(!rst_l)
ack_l<= #1 1'b1;
else if(cs_l)
ack_l<= #1 1'b0;
else
ack_l<= #1 1'b1;
endmodule
页:
[1]