[payamount]1.00[/payamount]
[pay]
- `timescale 1ns / 1ps
- //-----------------------------------------------------------
- module DAC_CTRL(
- input FCLK_50M,
- input rst_n,
- input [15:0] dac_dataout,
- output reg [1:0] DAC_ADR,
- output reg DAC_LOAD,
- output DAC_RST,
- output reg DAC_CS_N,
- output reg [15:0] DAC_DAT,
- //
- input [15:0] dac_value1,
- input [15:0] dac_value2,
- input [15:0] dac_value3,
- input [15:0] dac_value4
- );
-
- //-----------------------------------------------------------
- //posedge is active for reset.
- assign DAC_RST = rst_n;
- //-----------------------------------------------------------
-
-
- //-----------------------------------------------------------
- reg [5:0] wr_state;
- always @(posedge FCLK_50M)
- begin
- if(~rst_n) wr_state <= 6'b0;
- else wr_state <= wr_state + 1;
- end
- //
- always @(posedge FCLK_50M)
- begin
- if(~rst_n) DAC_CS_N <= 1'b1;
- else
- begin
- case(wr_state)
- 6'd1 : begin
- DAC_CS_N <= 1'b0 ;
- DAC_ADR <= 2'b00;
- DAC_LOAD <= 1'b0;
- DAC_DAT <= dac_value1;
- end
- 6'd2 : DAC_CS_N <= 1'b0 ;
- 6'd3 : DAC_CS_N <= 1'b1 ;
- 6'd4 : begin DAC_CS_N <= 1'b1 ; DAC_LOAD <= 1'b1; end
- 6'd5 : DAC_CS_N <= 1'b1 ;
- 6'd6 : DAC_CS_N <= 1'b1 ;
- 6'd7 : DAC_CS_N <= 1'b1 ;
- 6'd8 : DAC_CS_N <= 1'b1 ;
- //
- 6'd9 : begin
- DAC_CS_N <= 1'b0 ;
- DAC_ADR <= 2'b01;
- DAC_LOAD <= 1'b0;
- DAC_DAT <= dac_value2;
- end
- 6'd10 : DAC_CS_N <= 1'b0 ;
- 6'd11 : DAC_CS_N <= 1'b1 ;
- 6'd12 : begin DAC_CS_N <= 1'b1 ; DAC_LOAD <= 1'b1; end
- 6'd13 : DAC_CS_N <= 1'b1 ;
- 6'd14 : DAC_CS_N <= 1'b1 ;
- 6'd15 : DAC_CS_N <= 1'b1 ;
- 6'd16 : DAC_CS_N <= 1'b1 ;
- //
- 6'd17 : begin
- DAC_CS_N <= 1'b0 ;
- DAC_ADR <= 2'b10;
- DAC_LOAD <= 1'b0;
- DAC_DAT <= dac_value3;
- end
- 6'd18 : DAC_CS_N <= 1'b0 ;
- 6'd19 : DAC_CS_N <= 1'b1 ;
- 6'd20 : begin DAC_CS_N <= 1'b1 ; DAC_LOAD <= 1'b1; end
- 6'd21 : DAC_CS_N <= 1'b1 ;
- 6'd22 : DAC_CS_N <= 1'b1 ;
- 6'd23 : DAC_CS_N <= 1'b1 ;
- 6'd24 : DAC_CS_N <= 1'b1 ;
- //
- 6'd25 : begin
- DAC_CS_N <= 1'b0 ;
- DAC_ADR <= 2'b11;
- DAC_LOAD <= 1'b0;
- DAC_DAT <= dac_value4;
- end
- 6'd26 : DAC_CS_N <= 1'b0 ;
- 6'd27 : DAC_CS_N <= 1'b1 ;
- 6'd28 : begin DAC_CS_N <= 1'b1 ; DAC_LOAD <= 1'b1; end
- 6'd29 : DAC_CS_N <= 1'b1 ;
- 6'd30 : DAC_CS_N <= 1'b1 ;
- 6'd31 : DAC_CS_N <= 1'b1 ;
- 6'd32 : DAC_CS_N <= 1'b1 ;
-
- endcase
- end
- end
- //
-
-
-
- endmodule
[/pay]
|