📄 djm1.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0063)http://www.seattlerobotics.org/encoder/200601/article3/djm1.htm -->
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.3243" name=GENERATOR></HEAD>
<BODY text=#000000 vLink=#000000 aLink=#0000ff link=#0000b0
bgColor=#008080><BASEFONT face=Arial color=#ffffff>
<CENTER>
<H2>A Color Vision System for Embedded Robotics Applications</H2></CENTER>
<CENTER>
<H2><A
href="http://www.seattlerobotics.org/encoder/200601/article3/index.php#djm1"
target=main>Click here to return to article</CENTER></A>
<P>
<TABLE borderColor=#0080ff cellPadding=10 align=center
background=djm1.files/grid.gif border=10>
<TBODY>
<TR>
<TD><FONT color=black>
<CENTER>
<H4>Verilog FPGA I2C Instantiation:</H4></CENTER>
<P><PRE>
parameter I2C_REG_ADDR1 = 12'h001;
parameter FPGA_RST_ADDR = 16'h0009;
reg [1:0] qual_counter;
wire qual_data;
wire [7:0] i2c1_data_out;
wire scl1_pad_o;
wire scl1_padoen_o;
wire sda1_pad_o;
wire sda1_padoen_o;
wire scl1_pad_i;
wire sda1_pad_i;
wire i2c1_irq_o;
wire ack_1;
always @(posedge sys_clock)
begin
if(proc_cs)
qual_counter[1:0] <= #1 2'b00;
else
qual_counter[1:0] <= qual_counter[1:0] + 2'b01;
end
assign #1 qual_data = ((qual_counter[1:0] == 2'b01) && (~proc_rw));
assign #1 vip1_scl = scl1_padoen_o ? 1'bz : scl1_pad_o;
assign #1 vip1_sda = sda1_padoen_o ? 1'bz : sda1_pad_o;
assign #1 scl1_pad_i = vip1_scl;
assign #1 sda1_pad_i = vip1_sda;
assign #1 proc_data[7:0] = (~proc_cs && proc_rw && (proc_addr[15:4] == I2C_REG_ADDR1)) ?
i2c1_data_out[7:0] : 8'bzzzzzzzz;
i2c_master_top my_i2c1(
.wb_clk_i(sys_clock),
.wb_rst_i(1'b0),
.arst_i((proc_addr[15:0] == FPGA_RST_ADDR) && (qual_data)),
.wb_adr_i(proc_addr[2:0]),
.wb_dat_i(proc_data[7:0]),
.wb_dat_o(i2c1_data_out[7:0]),
.wb_we_i(~proc_rw),
.wb_stb_i((qual_counter[1:0] == 2'h2) && (proc_addr[15:4] == I2C_REG_ADDR1)),
.wb_cyc_i((qual_counter[1:0] == 2'h2) && (proc_addr[15:4] == I2C_REG_ADDR1)),
.wb_ack_o(ack_1),
.wb_inta_o(i2c1_irq_o),
.scl_pad_i(scl1_pad_i),
.scl_pad_o(scl1_pad_o),
.scl_padoen_o(scl1_padoen_o),
.sda_pad_i(sda1_pad_i),
.sda_pad_o(sda1_pad_o),
.sda_padoen_o(sda1_padoen_o)
);
</PRE></FONT></TR></TBODY></TABLE>
<P>
<CENTER>
<H2><A
href="http://www.seattlerobotics.org/encoder/200601/article3/index.php#djm1"
target=main>Click here to return to article</CENTER></A>
<P></H2></P></H2></BASEFONT></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -