【代码更新】SPI时序——DA数模转换
DA芯片手册:https://www.ti.com.cn/cn/lit/ds/symlink/dac7715.pdf?ts=1709512667102&ref_url=https%253A%252F%252Fwww.ti.com.cn%252Fproduct%252Fcn%252FDAC7715
下图是芯片需要配置信号的时序图
芯片引脚信号:
项目硬件连接图:
1 // 2 //1.ADC7715UB Single-Supply Operation 3 // 4 //A1 --->LOADREG --P4 5 //A2 --->LOADDACS --N4 6 //A3 --->SCLK --P5 7 //A4 --->SDI --N6 8 // 9 //A6 --->RESET --R3 10 // 11 module da_conversion ( 12 // 13 input wire clk , 14 input wire rst_n , 15 // 16 output reg dac_loadreg , 17 output reg dac_loaddacs, 18 output reg dac_sclk , 19 output reg dac_din , 20 output wire dac_reset 21 // 22 ); 23 // 24 assign dac_reset = 1'b1; 25 // 26 reg [5:0] cnt0; 27 wire add_cnt0; 28 wire end_cnt0; 29 always@(posedge clk or negedge rst_n)begin 30 if(rst_n==1'b0)begin 31 cnt0<=0; 32 end 33 else if(add_cnt0)begin 34 if(end_cnt0) 35 cnt0<=0; 36 else 37 cnt0<=cnt0+1; 38 end 39 end 40 assign add_cnt0 = 1; 41 assign end_cnt0 = add_cnt0 && cnt0 == 10-1;//10分频 42 // 43 reg [5:0] cnt1; 44 wire add_cnt1; 45 wire end_cnt1; 46 always@(posedge clk or negedge rst_n)begin 47 if(rst_n==1'b0)begin 48 cnt1<=0; 49 end 50 else if(add_cnt1)begin 51 if(end_cnt1) 52 cnt1<=0; 53 else 54 cnt1<=cnt1+1; 55 end 56 end 57 assign add_cnt1 = end_cnt0; 58 assign end_cnt1 = add_cnt1 && cnt1 == 18-1; 59 // 60 always@(posedge clk or negedge rst_n)begin 61 if(rst_n==1'b0)begin 62 dac_sclk<=0; 63 end 64 else if(add_cnt0 && cnt0 == 5-1 && cnt1 >= 1 && cnt1 < 17)begin 65 dac_sclk<=1; 66 end 67 else if(end_cnt0)begin 68 dac_sclk<=0; 69 end 70 end 71 // 72 parameter A1 = 1'b1; 73 parameter A0 = 1'b1; 74 parameter N = 12'h400; 75 // 76 wire [15:0] data; 77 assign data = {A1,A0,1'b0,1'b0,N}; 78 // 79 always@(posedge clk or negedge rst_n)begin 80 if(rst_n==1'b0)begin 81 dac_din <=0; 82 end 83 else if(end_cnt0 && cnt1 < 16)begin 84 dac_din <=data[15-cnt1]; 85 end 86 end 87 // 88 always@(posedge clk or negedge rst_n)begin 89 if(rst_n==1'b0)begin 90 dac_loadreg <=0; 91 end 92 else if(add_cnt0 && cnt0 == 0 && cnt1 == 0)begin 93 dac_loadreg <=1; 94 end 95 else if(add_cnt0 && cnt0 == 1 && cnt1 == 17)begin 96 dac_loadreg <=0; 97 end 98 end 99 // 100 always@(posedge clk or negedge rst_n)begin 101 if(rst_n==1'b0)begin 102 dac_loaddacs <=1; 103 end 104 else if(add_cnt0 && cnt0 == 0 && cnt1 == 0)begin 105 dac_loaddacs <=0; 106 end 107 else begin 108 dac_loaddacs <=1; 109 end 110 end 111 endmoduleda_conversion
标签:wire,dac,--,DA,---,SPI,output,数模转换,reg From: https://www.cnblogs.com/taylorrrrrrrrrrr/p/18051119