User`s manual
847 // i2c module for use with the ADV7185
848
849 module i2c (reset, clock4x, data, load, idle, ack, scl, sda);
850
851 input reset;
852 input clock4x;
853 input [7:0] data;
854 input load;
855 output ack;
856 output idle;
857 output scl;
858 output sda;
859
860 reg [7:0] ldata;
861 reg ack, idle;
862 reg scl;
863 reg sdai;
864
865 reg [7:0] state;
866
867 assign sda = sdai ? 1’bZ : 1’b0;
868
869 always @(posedge clock4x)
870 if (reset)
871 begin
872 state <= 0;
873 ack <= 0;
874 end
875 else
876 case (state)
877 8’h00: // idle
878 begin
879 scl <= 1’b1;
880 sdai <= 1’b1;
881 ack <= 1’b0;
882 idle <= 1’b1;
883 if (load)
884 begin
885 ldata <= data;
886 ack <= 1’b1;
887 state <= state+1;
888 end
889 end
890 8’h01: // Start
891 begin
892 ack <= 1’b0;
62