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

📄 ads7822.v

📁 fpga嵌入式系统组件
💻 V
字号:

`timescale 1ns / 1ps
// synthesis translate_on
module ads7822 (
                   // inputs:
                    clk,
                    read_n,
                    chipselect_n,
                   // outputs:
                    AD_DATA,
                    AD_CS,
                    AD_CLK,
                    irq,
                    readdata
                 )
;

  input           AD_DATA;
  output           AD_CS;
  output           AD_CLK;
  output           irq;
  output  [  15: 0] readdata;
  input            read_n;
  input            clk;
  input            chipselect_n;
  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;
         irq <= 0;
         end
       else if(COUNTER =='d15)
            begin
            COUNTER <= COUNTER+1;
            data_out <= {4'b0000,data_reg[11:0]};
            irq <= 1;
            AD_CS<= 1'b1;
            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 + -