⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ads7822.v

📁 利用Verilog语言实现读取ADS7822模数转换芯片的串行输出数据
💻 V
字号:
//`timescale 1ns / 1ps
// synthesis translate_on
module ads7822 (
                   // inputs:
                    clk,
                    //read_n,
                    chipselect_n,
                    AD_DATA,
                  // outputs:
                    AD_CS,
                    AD_CLK,
                    irq,
                    //readdata
                 )
;
  input            clk;
  //input            read_n;
  input            chipselect_n;
  input           AD_DATA; 
  output           AD_CS;
  output           AD_CLK;
  output           irq;
  //output [15:0] readdata;
  
  
  
  wire             AD_DATA;
  reg            AD_CS;
  reg              AD_CLK;
  reg     [10:0]   DCLK_DIV;
  reg     [4:0]    COUNTER;
  reg     [15:0]   data_out;
  reg     [11:0]   data_reg;
  reg             irq;
  //wire    [15:0] readdata;

parameter CLK_FREQ = 'D50_000_000;
parameter DCLK_FREQ = 'D1_000_000;

 // assign readdata =  data_out;
 //assign AD_CS = chipselect_n;

always @(posedge clk)
  if(DCLK_DIV < (CLK_FREQ / DCLK_FREQ))
    DCLK_DIV <= DCLK_DIV+1;
  else
    begin 
      DCLK_DIV <= 0;
      AD_CLK <= ~AD_CLK;
    end



always @(negedge AD_CLK )
     
      
      
      
        if(COUNTER < 'd15)
         begin
         data_reg[0] <= AD_DATA;
         data_reg[11:1] <= data_reg[10:0];
         COUNTER <= COUNTER+1;
         
         end
       else if(COUNTER =='d15)
            begin
            COUNTER <= COUNTER+1;
            data_out <= {4'b0000,data_reg[11:0]};
            //
            AD_CS<= 1'b1;
            if(data_out<=2449)
                irq <= 1;
            else irq <= 0;
            end   
          else 
            begin
            COUNTER <= 0;
            AD_CS<= 1'b0;
            end
        

  //control_slave, which is an e_avalon_slave

endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -