module tlc5620 (
input clk_50MHz,
input rst_n,
output da_clk,
output da_load,
output da_ldac,
output da_data
);
wire clk_1MHz;
reg [7:0] data;
reg [3:0] num;
always @(posedge clk_1MHz or negedge rst_n)
begin
if(!rst_n)
begin
num<=4'd0;
data<=8'd100;
end
else
begin
if(num==12)
begin
num<=4'd0;
end
else
begin
num<=num+1'd1;
end
end
end
reg da_data_r;
always @(posedge clk_50MHz or negedge rst_n)
begin
if(!rst_n)
begin
da_data_r<=1'b0;
end
else
begin
case(num)
4'd0:da_data_r<=1'b0;
4'd1:da_data_r<=1'b0;
4'd2:da_data_r<=1'b0;
4'd3:da_data_r<=data[7];
4'd4:da_data_r<=data[6];
4'd5:da_data_r<=data[5];
4'd6:da_data_r<=data[4];
4'd7:da_data_r<=data[3];
4'd8:da_data_r<=data[2];
4'd9:da_data_r<=data[1];
4'd10:da_data_r<=data[0];
4'd11:da_data_r<=1'b0;
4'd12:da_data_r<=1'b0;
default:;
endcase
end
end
assign da_data=da_data_r;
assign da_clk=clk_1MHz;
assign da_load=(num==11)?1'b0:1'b1;
assign da_ldac=(num==12)?1'b0:1'b1;
pll pll_dut (
.areset(rst_n),
.inclk0(clk_50MHz),
.c0(clk_1MHz)
);
endmodule |