设为首页 加入收藏

TOP

FPGA高速ADC接口实战——250MSPS采样率ADC9481(二)
2019-08-24 00:03:37 】 浏览:189
Tags:FPGA 高速 ADC 接口 实战 250MSPS 采样 ADC9481
osedge
clk0 or negedge rst_n)begin 94 if(rst_n == 0) 95 data_b <= 0; 96 else 97 data_b <= db; 98 end 99 100 always@(posedge clk0 or negedge rst_n)begin 101 if(rst_n == 0) 102 data_b_vld <= 0; 103 else if(setup_flag) 104 data_b_vld <= 1'b1; 105 else 106 data_b_vld <= 0; 107 end 108 109 /****************************clk1(dco_n)采集DA**************************************/ 110 always @(negedge clk0 or negedge rst_n)begin 111 if(rst_n==1'b0)begin 112 data_a <= 0; 113 end 114 else begin 115 data_a <= da; 116 end 117 end 118 119 always@(negedge clk0 or negedge rst_n)begin 120 if(rst_n == 0)begin 121 data_a_vld <= 0; 122 end 123 else if(setup_flag)begin 124 data_a_vld <= 1'b1; 125 end 126 else 127 data_a_vld <= 0; 128 end 129 /****************************FIFO写逻辑**************************************/ 130 //FIFO:width 16bit depth 16 async 131 132 always @(negedge clk0 or negedge rst_n)begin 133 if(rst_n==1'b0)begin 134 wr_en <= 0; 135 end 136 else if(data_a_vld & data_b_vld)begin 137 wr_en <= 1'b1; 138 end 139 else 140 wr_en <= 0; 141 end 142 143 always @(negedge clk0 or negedge rst_n)begin 144 if(rst_n==1'b0)begin 145 wr_data <= 0; 146 end 147 else begin 148 wr_data <= {data_b,data_a};//高字节为后一个数据 149 end 150 end 151 152 /****************************FIFO读侧逻辑**************************************/ 153 //非空即读 154 always@(*)begin 155 if(~empty) 156 rd_en = 1'b1; 157 else 158 rd_en = 0; 159 end 160 161 always @(posedge user_clk or negedge rst_n)begin 162 if(rst_n == 0) 163 dout <= 0; 164 else 165 dout <= rd_data; 166 end 167 168 always @(posedge user_clk or negedge rst_n)begin 169 if(rst_n == 0) 170 dout_vld <= 0; 171 else if(rd_en)begin 172 dout_vld <= 1'b1; 173 end 174 else 175 dout_vld <= 0; 176 end 177 178 179 //FIFO instance 180 fifo_generator_2 interface_fifo ( 181 .wr_clk(~clk0), // input wire wr_clk 182 .rd_clk(user_clk), // input wire rd_clk 183 .din(wr_data), // input wire [15 : 0] din 184 .wr_en(wr_en), // input wire wr_en 185 .rd_en(rd_en), // input wire rd_en 186 .dout(rd_data), // output wire [15 : 0] dout 187 .full(full), // output wire full 188 .empty(empty), // output wire empty 189 .rd_data_count(rd_data_count), // output wire [3 : 0] rd_data_count 190 .wr_data_count(wr_data_count) // output wire [3 : 0] wr_data_count 191 ); 192 193 194 endmodule adc_interface

  顶层模块代码:

  1 `timescale 1ns / 1ps
  2 
  3 module top#(parameter DATA_W = 8,//改动参数需要重新配置IP核
  4                       CHANNEL_NUM = 2)
  5    (
  6     input                                       dco_p,//125MHZ 
  7     input                                       dco_n,
  8     input       [DATA_W-1:0]                    adc_p1,//通道A
  9     input       [DATA_W-1:0]                    adc_p2,//通道B
 10     output                                      adc_pd,
 11     output                                      pll_ce,
 12     output                                      pll_rst_n,
 13     output                                      pen,
 14     
 15     //user interface signals
 16     
 17     input                                       clk,//100M
 18     input                                       rst_n,
 19     input                                       en//上升沿有效 有效一次则将之后采集到的一帧数据写入到FFT模块进行运算
 20     );
 21 /*********************************parameters*******************************************/
 22     function integer clogb2 (input integer bit_depth);
 23       begin
 24         for(clogb2=0; bit_depth>0; clogb2=clogb2+1)
 25           bit_depth = bit_depth >> 1;
 26       end
 27     endfunction
 28 
 29     localparam  FFT_W = 20,
 30                 FFT_N = 1024,
 31                 DATA_EACH_CHANNEL = FFT_N/CHANNEL_NUM;
 32 
 33     //log2 
 34     localparam DECH_W = clogb2(DATA_EACH_
首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇ARM与FPGA通过spi通信设计2.spi m.. 下一篇FPGA控制RGMII接口PHY芯片基础

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目