138 lines
1.9 KiB
Verilog
138 lines
1.9 KiB
Verilog
`timescale 1ns / 1ps
|
|
module ft2232h_245_sync(input clk,//input 50_MHz
|
|
input reset,
|
|
input [7:0] DAC_DATA,
|
|
input [7:0] AD_Bus,
|
|
output reg oe,
|
|
output reg rd,
|
|
input txe,
|
|
output reg wr,
|
|
input clkout_ft2232);
|
|
//output reg oe);
|
|
|
|
//wire CLK_OUT_PLL; //Output from PLL_IP_clock
|
|
|
|
|
|
reg txe_n;
|
|
reg wr_n;
|
|
|
|
reg oe_n = 1'b1;
|
|
reg rd_n = 1'b1;
|
|
|
|
reg Flag_tx = 0;
|
|
|
|
reg data_en_1 = 0;
|
|
reg data_en_2 = 0;
|
|
|
|
reg [7:0] data_o = 8'b00000000;
|
|
|
|
|
|
parameter TX_RX_0 = 3'b000;
|
|
parameter TX_1 = 3'b001;
|
|
parameter TX_2 = 3'b010;
|
|
parameter TX_3 = 3'b011;
|
|
|
|
reg [3:0] state;
|
|
|
|
reg [3:0] state_data;
|
|
|
|
reg counter = 1'b0;
|
|
|
|
begin
|
|
|
|
assign AD_Bus = (data_en_1 == 1'b1) ? DAC_DATA : 8'bz;
|
|
|
|
always @ (posedge clkout_ft2232)
|
|
begin
|
|
if ((txe_n == 0) && Flag_tx)
|
|
begin
|
|
data_en_1 = 1'b1;
|
|
end
|
|
end
|
|
|
|
|
|
always @ (posedge clk)
|
|
begin
|
|
wr = wr_n;
|
|
txe_n = txe;
|
|
oe = oe_n;
|
|
rd = rd_n;
|
|
end
|
|
|
|
always @ (posedge clk)
|
|
if (reset)
|
|
begin
|
|
state = TX_RX_0;
|
|
state_data = 0;
|
|
counter = 1'b0;
|
|
wr_n = 1'b1;
|
|
end
|
|
else
|
|
|
|
begin
|
|
|
|
|
|
case(state)
|
|
|
|
TX_RX_0: begin
|
|
if (txe_n == 0)
|
|
begin
|
|
state = TX_1;
|
|
end
|
|
else
|
|
begin
|
|
state = TX_RX_0;
|
|
wr_n = 1'b1;
|
|
end
|
|
end
|
|
|
|
TX_1 : begin
|
|
if(txe_n == 0)
|
|
begin
|
|
counter = counter + 1;
|
|
if(counter == 1'b1)
|
|
begin
|
|
counter = 1'b0;
|
|
state = TX_2;
|
|
end
|
|
end
|
|
else
|
|
begin
|
|
wr_n = 1'b1;
|
|
state = TX_RX_0;
|
|
end
|
|
end
|
|
|
|
TX_2 : begin
|
|
wr_n = 1'b0;
|
|
counter = counter + 1;
|
|
if(counter == 1'b1)
|
|
begin
|
|
counter = 1'b0;
|
|
state = TX_3;
|
|
end
|
|
end
|
|
|
|
TX_3 : begin
|
|
if(txe_n == 0)
|
|
begin
|
|
Flag_tx = 1'b1;
|
|
state = TX_3;
|
|
end
|
|
else
|
|
begin
|
|
state = TX_RX_0;
|
|
wr_n = 1'b1;
|
|
Flag_tx = 1'b0;
|
|
end
|
|
end
|
|
|
|
endcase
|
|
end
|
|
end
|
|
endmodule
|
|
|
|
|
|
|
|
|