66 lines
2.1 KiB
Verilog

`timescale 1ns / 1ps
module DAC3162_driver (
input clk_in,
input clk_div,
input [11:0] DA3162_CH1,
input [11:0] DA3162_CH2,
/*DAC*/
output [11:0] dac_data_p,
output [11:0] dac_data_n,
output dac_clk_p,
output dac_clk_n,
output dac_sleep
);
assign dac_sleep = 1'd1;
reg [11:0] dac_a_int = 0;
reg [11:0] dac_b_int = 0;
reg [11:0] dac_a_intt = 0;
reg [11:0] dac_b_intt = 0;
reg [1:0] cnt_clk = 0;
reg [3:0] power_on_rst_cnt = 4'h0;
reg power_on_rst = 1;
always @ (posedge clk_in) begin
dac_a_int<=DA3162_CH1 + 12'b100000000000;
dac_b_int<=DA3162_CH2 + 12'b100000000000;
dac_a_intt<=dac_a_int;
dac_b_intt<=dac_b_int;
end
always @ (posedge clk_div) begin
if (power_on_rst_cnt == 4'hf) begin
power_on_rst_cnt <= power_on_rst_cnt;
power_on_rst <= 0;
end
else begin
power_on_rst_cnt <= power_on_rst_cnt + 1;
power_on_rst <= 1;
end
end
LVDS_DDR_clk DAC3162_clk_u (
.data_out_from_device ( 4'b0101 ), // input [3:0] data_out_from_device
.data_out_to_pins_p ( dac_clk_p ), // output [0:0] data_out_to_pins_p
.data_out_to_pins_n ( dac_clk_n ), // output [0:0] data_out_to_pins_n
.clk_in ( clk_in ), // input clk_in
.clk_div_in ( clk_div ), // input clk_div_in
.io_reset ( power_on_rst ) // input io_reset
);
// input [47:0] data_out_from_device
LVDS_DDR_data DAC3162_data_u (
.clk_in ( clk_in ), // input clk_in
.clk_div_in ( clk_div ), // input clk_div_in
.data_out_from_device ({dac_a_int,dac_b_int,dac_a_intt,dac_b_intt} ),
.data_out_to_pins_p ( dac_data_p ), // output [11:0] data_out_to_pins_p
.data_out_to_pins_n ( dac_data_n ), // output [11:0] data_out_to_pins_n
.io_reset ( power_on_rst ) // input io_reset
);
endmodule