小舍YZ 发表于 2017-9-23 17:09:00

顶层文件程序

顶层文件程序

`timescale 1 ns/100 ps
module iic(data, addr, rst_l, clock, cs_l, ack_l, rd_wr_l, scl_pin, sda_pin);
//外围处理器接口
inout data;//处理器的数据总线
input addr;//处理器的地址总线
input      rst_l;//异步复位信号
input      clock;//外部系统时钟
input      cs_l;//使能信号
input      rd_wr_l;//命令信号,读/写
output   ack_l;//反馈给处理器的响应信号
//iic接口
output   scl_pin;//iic时钟信号
inout      sda_pin;//iic数据信号
//内连线
//处理器接口线型
wire   data;
wire   addr;
wire      rst_l;
wire      clock;
wire      cs_l;
wire      rd_wr_l;

wire      ack_l;
//iic接口线型
wire      scl_pin;
wire      sda_pin;
//寄存器输出线型
wire   wrd_add;//iic地址
wire      iic_go;//iic开始信号
//读寄存器输出线型
wire   data_o;//输出给处理器的数据
//时钟模块输出线型
wire         scl_tick;
//状态机线型
wire         scl_cnt_en;//st_scl计数使能信号
wire         iic_rdy;//读准备好信号
wire         iic_act;//iic周期激活信号
wire    iic_rdata;//iic读的数据
wire         ack_err;//没有响应
wire         sda;//iic data
wire         scl;//iic clock
//模块例化
//接收模块寄存器
iic_wreg U1(.data(data),
.addr(addr),
.rst_l(rst_l),
.clock(clock),
.cs_l(cs_l),
.rd_wr_l(rd_wr_l),
.scl_cnt_en(scl_cnt_en),
.wrd_add(wrd_add),

.iic_go(iic_go),
.ack_l(ack_l));
//发送模块寄存器
iic_rreg U2(.wrd_add(wrd_add),
.iic_rdy(iic_rdy),
.iic_act(iic_act),
.ack_err(ack_err),
.iic_rdata(iic_rdata),
.addr(addr),
.data_o(data_o));
//iic时钟模块
iic_clk U3(.rst_l(rst_l),
.clock(clock),
.scl_cnt_en(scl_cnt_en),
.scl_tick(scl_tick));
//iic时序控制模块
iic_st U4(.rst_l(rst_l),
.clock(clock),
.scl_tick(scl_tick),
.iic_go(iic_go),
.wrd_add(wrd_add),
.sda_pin(sda_pin),
.sda(sda),
.scl(scl),
.scl_cnt_en(scl_cnt_en),
.iic_rdy(iic_rdy),
.iic_act(iic_act),
.iic_rdata(iic_rdata),
.ack_err(ack_err));
//iic输出缓冲模块
iic_tbuf U5(.data_o(data_o),

.data(data),
.cs_l(cs_l),
.rd_wr_l(rd_wr_l),
.sda(sda),
.scl(scl),
.scl_pin(scl_pin),
.sda_pin(sda_pin));
endmodule

页: [1]
查看完整版本: 顶层文件程序