彭吉象《艺术学概论》(第5版)配套题库

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2019/11/27 14:34:05
// Design Name: 
// Module Name: level_adc
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////

module level_adc
   (
    input        clk  ,
    input        start,//two cycle width of "clk"
    output       sclk ,
    output       cs_n ,
    input        sdat ,
    output[12:0] level,
    output reg   valid
    );
    
   //there will be one cycle ambiguity to truely start ADC sampling.
   //since 
   reg div2= 1'b1;
   always @ ( posedge clk )
     div2 <= ~div2; 
   
   reg[13:0] length=0;
   
   always @ ( posedge clk )
     if(div2)
       begin
         length <= {length[12:0],start};
       end
       
   (* IOB="TRUE" *)
   reg chip_sel=1'b1;
   reg sclk_gat=1'b0;
   always @ ( posedge clk )
   if(div2)
     if(length!=14'h0)
        begin
        chip_sel <= 1'b0;
        end
     else
        begin
        chip_sel <= 1'b1;  
        end
   always @ ( posedge clk )
   if(div2)
     if({length[13:0],start}!=15'h0)
        begin
        sclk_gat <= 1'b1;
        end
     else
        begin
        sclk_gat <= 1'b0;
        end        
    assign cs_n = chip_sel;  
    
    reg clk_gen=1'b0;
    always @ ( posedge clk )
      clk_gen <= div2 & sclk_gat;
    assign sclk = clk_gen;
   
   reg[11:0] sample=12'h0;
   always @ ( posedge clk )
   if(div2)
     case(length)
       14'h0004:#1 sample[00]<= sdat;
       14'h0008:#1 sample[01]<= sdat;
       14'h0010:#1 sample[02]<= sdat;
       14'h0020:#1 sample[03]<= sdat;
       14'h0040:#1 sample[04]<= sdat;
       14'h0080:#1 sample[05]<= sdat;       
       14'h0100:#1 sample[06]<= sdat;
       14'h0200:#1 sample[07]<= sdat;
       14'h0400:#1 sample[08]<= sdat;
       14'h0800:#1 sample[09]<= sdat;   
       14'h1000:#1 sample[10]<= sdat;
       14'h2000:#1 sample[11]<= sdat;  
       default :#1 sample    <=sample;//14'h0;          
     endcase
    
    assign level = sample;
    
    always @ ( posedge clk )
      valid <= chip_sel & clk_gen; 
    
     
endmodule

以上是ADC串转并实现代码,代码源文件点击链接。

链接:https://pan.baidu.com/s/1lWNLbL_nTHnOhMVvcdaRNg

提取码:uy8b

你可能感兴趣的:(彭吉象《艺术学概论》(第5版)配套题库)