⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 djm1.htm

📁 基于FPGA的嵌入式机器人视觉识别系统模块源代码
💻 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] &lt;= #1 2'b00;
	else
		qual_counter[1:0] &lt;= qual_counter[1:0] + 2'b01;
end

assign #1 qual_data = ((qual_counter[1:0] == 2'b01) &amp;&amp; (~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 &amp;&amp; proc_rw &amp;&amp; (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) &amp;&amp; (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) &amp;&amp; (proc_addr[15:4] == I2C_REG_ADDR1)),
	.wb_cyc_i((qual_counter[1:0] == 2'h2) &amp;&amp; (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 + -