dac verilog ad5601

2022-11-24 21:51:46 字數 2040 閱讀 2578

按照手冊的時序編寫程式,

關注下晶片的波特率範圍

看看手冊的資料傳輸那些事有效的資料位

module dac

(input clk,

input rst_n_in,

output reg sclk,

output reg sync,

output reg din

);//產生狀態

reg[5:0] cnt=0;

[email protected](posedge clk or negedge rst_n_in)

begin

if(!rst_n_in)

cnt<=0;

else

begin

if(cnt>=34)cnt<=0;

else cnt<=cnt+1;

endend

reg[15:0] data_reg=16'h1740;

[email protected](posedge clk or negedge rst_n_in)

begin

if(!rst_n_in)begin sclk=0;sync=1; end

else begin

case(cnt)

0: begin

data_reg=16'h1740;//顯示的資料,16位中前兩位無效位,最後6位無效位,中間8位為資料位

end1:begin sclk=1;din=data_reg[15];sync=0;end

2:begin sclk=0;end //

3:begin sclk=1;din=data_reg[14];end

4:begin sclk=0;end //

5:begin sclk=1;din=data_reg[13];end

6:begin sclk=0;end //

7:begin sclk=1;din=data_reg[12];end

8:begin sclk=0;end //

9:begin sclk=1;din=data_reg[11];end

10:begin sclk=0;end //

11:begin sclk=1;din=data_reg[10];end

12:begin sclk=0;end //

13:begin sclk=1;din=data_reg[9];end

14:begin sclk=0;end //

15:begin sclk=1;din=data_reg[8];end

16:begin sclk<=0;end //

17:begin sclk=1;din=data_reg[7];sync=0;end

18:begin sclk=0;end //

19:begin sclk=1;din=data_reg[6];end

20:begin sclk=0;end //

21:begin sclk=1;din=data_reg[5];end

22:begin sclk=0;end //

23:begin sclk=1;din=data_reg[4];end

24:begin sclk=0;end //

25:begin sclk=1;din=data_reg[3];end

26:begin sclk=0;end //

27:begin sclk=1;din=data_reg[2];end

28:begin sclk=0;end //

29:begin sclk=1;din=data_reg[1];end

30:begin sclk=0;end //

31:begin sclk=1;din=data_reg[0];sync=0;end

32:begin sclk=0;end //

33:begin sclk=1; sync=1;end //

endcase

end

end

endmodule