axi_ad9361_rx.v

news/2025/10/13 15:06:18/文章来源:https://www.cnblogs.com/suozhang/p/19138522

axi_ad9361_rx.v

// ***************************************************************************
// ***************************************************************************
// Copyright 2014 - 2017 (c) Analog Devices, Inc. All rights reserved.
//
// In this HDL repository, there are many different and unique modules, consisting
// of various HDL (Verilog or VHDL) components. The individual modules are
// developed independently, and may be accompanied by separate and unique license
// terms.
//
// The user should read each of these license terms, and understand the
// freedoms and responsibilities that he or she has by using this source/core.
//
// This core is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
// A PARTICULAR PURPOSE.
//
// Redistribution and use of source or resulting binaries, with or without modification
// of this file, are permitted under one of the following two license terms:
//
//   1. The GNU General Public License version 2 as published by the
//      Free Software Foundation, which can be found in the top level directory
//      of this repository (LICENSE_GPL2), and also online at:
//      <https://www.gnu.org/licenses/old-licenses/gpl-2.0.html>
//
// OR
//
//   2. An ADI specific BSD license, which can be found in the top level directory
//      of this repository (LICENSE_ADIBSD), and also on-line at:
//      https://github.com/analogdevicesinc/hdl/blob/master/LICENSE_ADIBSD
//      This will allow to generate bit files and not release the source code,
//      as long as it attaches to an ADI device.
//
// ***************************************************************************
// ***************************************************************************
// ADC channel-need to work on dual mode for pn sequence

`timescale 1ns/100psmodule axi_ad9361_rx #(// parametersparameter   ID = 0,parameter   FPGA_TECHNOLOGY = 0,parameter   FPGA_FAMILY = 0,parameter   SPEED_GRADE = 0,parameter   DEV_PACKAGE = 0,parameter   MODE_1R1T = 0,parameter   CMOS_OR_LVDS_N = 0,parameter   PPS_RECEIVER_ENABLE = 0,parameter   INIT_DELAY = 0,parameter   USERPORTS_DISABLE = 0,parameter   DATAFORMAT_DISABLE = 0,parameter   DCFILTER_DISABLE = 0,parameter   IQCORRECTION_DISABLE = 0) (// commonoutput          mmcm_rst,// adc interfaceoutput          adc_rst,input           adc_clk,input           adc_valid,input   [47:0]  adc_data,input           adc_status,output          adc_r1_mode,output          adc_ddr_edgesel,input   [47:0]  dac_data,// delay interfaceoutput  [12:0]  up_dld,output  [64:0]  up_dwdata,input   [64:0]  up_drdata,input           delay_clk,output          delay_rst,input           delay_locked,// dma interfaceoutput          adc_enable_i0,output          adc_valid_i0,output  [15:0]  adc_data_i0,output          adc_enable_q0,output          adc_valid_q0,output  [15:0]  adc_data_q0,output          adc_enable_i1,output          adc_valid_i1,output  [15:0]  adc_data_i1,output          adc_enable_q1,output          adc_valid_q1,output  [15:0]  adc_data_q1,input           adc_dovf,// gpioinput   [31:0]  up_adc_gpio_in,output  [31:0]  up_adc_gpio_out,// 1PPS reporting counter and interruptinput   [31:0]  up_pps_rcounter,input           up_pps_status,output          up_pps_irq_mask,// processor interfaceinput           up_rstn,input           up_clk,input           up_wreq,input   [13:0]  up_waddr,input   [31:0]  up_wdata,output          up_wack,input           up_rreq,input   [13:0]  up_raddr,output  [31:0]  up_rdata,output          up_rack,// drp interfaceoutput          up_drp_sel,output          up_drp_wr,output   [11:0] up_drp_addr,output   [31:0] up_drp_wdata,input    [31:0] up_drp_rdata,input           up_drp_ready,input           up_drp_locked);// configuration settingslocalparam  CONFIG =  (PPS_RECEIVER_ENABLE * 256) +(CMOS_OR_LVDS_N * 128) +(MODE_1R1T * 16) +(USERPORTS_DISABLE * 8) +(DATAFORMAT_DISABLE * 4) +(DCFILTER_DISABLE * 2) +(IQCORRECTION_DISABLE * 1);// internal registersreg             up_status_pn_err = 'd0;reg             up_status_pn_oos = 'd0;reg             up_status_or = 'd0;reg     [31:0]  up_rdata_int = 'd0;reg             up_rack_int = 'd0;reg             up_wack_int = 'd0;// internal signalswire    [15:0]  adc_dcfilter_data_out_0_s;wire    [15:0]  adc_dcfilter_data_out_1_s;wire    [15:0]  adc_dcfilter_data_out_2_s;wire    [15:0]  adc_dcfilter_data_out_3_s;wire    [ 3:0]  up_adc_pn_err_s;wire    [ 3:0]  up_adc_pn_oos_s;wire    [ 3:0]  up_adc_or_s;wire    [31:0]  up_rdata_s[0:5];wire    [ 5:0]  up_rack_s;wire    [ 5:0]  up_wack_s;// processor read interfaceassign up_wack = up_wack_int;assign up_rack = up_rack_int;assign up_rdata = up_rdata_int;always @(negedge up_rstn or posedge up_clk) beginif (up_rstn == 0) beginup_status_pn_err <= 'd0;up_status_pn_oos <= 'd0;up_status_or <= 'd0;up_rdata_int <= 'd0;up_rack_int <= 'd0;up_wack_int <= 'd0;end else beginup_status_pn_err <= | up_adc_pn_err_s;up_status_pn_oos <= | up_adc_pn_oos_s;up_status_or <= | up_adc_or_s;up_rdata_int <= up_rdata_s[0] | up_rdata_s[1] | up_rdata_s[2] |up_rdata_s[3] | up_rdata_s[4] | up_rdata_s[5];up_rack_int <=  | up_rack_s;up_wack_int <=  | up_wack_s;endend// channel 0 (i)
axi_ad9361_rx_channel #(.Q_OR_I_N (0),.CHANNEL_ID (0),.DISABLE (0),.USERPORTS_DISABLE (USERPORTS_DISABLE),.DATAFORMAT_DISABLE (DATAFORMAT_DISABLE),.DCFILTER_DISABLE (DCFILTER_DISABLE),.IQCORRECTION_DISABLE (IQCORRECTION_DISABLE))i_rx_channel_0 (.adc_clk (adc_clk),.adc_rst (adc_rst),.adc_valid (adc_valid),.adc_data (adc_data[11:0]),.adc_data_q (adc_data[23:12]),.adc_or (1'b0),.dac_data (dac_data[11:0]),.adc_dcfilter_data_out (adc_dcfilter_data_out_0_s),.adc_dcfilter_data_in (adc_dcfilter_data_out_1_s),.adc_iqcor_valid (adc_valid_i0),.adc_iqcor_data (adc_data_i0),.adc_enable (adc_enable_i0),.up_adc_pn_err (up_adc_pn_err_s[0]),.up_adc_pn_oos (up_adc_pn_oos_s[0]),.up_adc_or (up_adc_or_s[0]),.up_rstn (up_rstn),.up_clk (up_clk),.up_wreq (up_wreq),.up_waddr (up_waddr),.up_wdata (up_wdata),.up_wack (up_wack_s[0]),.up_rreq (up_rreq),.up_raddr (up_raddr),.up_rdata (up_rdata_s[0]),.up_rack (up_rack_s[0]));// channel 1 (q)
axi_ad9361_rx_channel #(.Q_OR_I_N (1),.CHANNEL_ID (1),.DISABLE (0),.USERPORTS_DISABLE (USERPORTS_DISABLE),.DATAFORMAT_DISABLE (DATAFORMAT_DISABLE),.DCFILTER_DISABLE (DCFILTER_DISABLE),.IQCORRECTION_DISABLE (IQCORRECTION_DISABLE))i_rx_channel_1 (.adc_clk (adc_clk),.adc_rst (adc_rst),.adc_valid (adc_valid),.adc_data (adc_data[23:12]),.adc_data_q (adc_data[11:0]),.adc_or (1'b0),.dac_data (dac_data[23:12]),.adc_dcfilter_data_out (adc_dcfilter_data_out_1_s),.adc_dcfilter_data_in (adc_dcfilter_data_out_0_s),.adc_iqcor_valid (adc_valid_q0),.adc_iqcor_data (adc_data_q0),.adc_enable (adc_enable_q0),.up_adc_pn_err (up_adc_pn_err_s[1]),.up_adc_pn_oos (up_adc_pn_oos_s[1]),.up_adc_or (up_adc_or_s[1]),.up_rstn (up_rstn),.up_clk (up_clk),.up_wreq (up_wreq),.up_waddr (up_waddr),.up_wdata (up_wdata),.up_wack (up_wack_s[1]),.up_rreq (up_rreq),.up_raddr (up_raddr),.up_rdata (up_rdata_s[1]),.up_rack (up_rack_s[1]));// channel 2 (i)
axi_ad9361_rx_channel #(.Q_OR_I_N (0),.CHANNEL_ID (2),.DISABLE (MODE_1R1T),.USERPORTS_DISABLE (USERPORTS_DISABLE),.DATAFORMAT_DISABLE (DATAFORMAT_DISABLE),.DCFILTER_DISABLE (DCFILTER_DISABLE),.IQCORRECTION_DISABLE (IQCORRECTION_DISABLE))i_rx_channel_2 (.adc_clk (adc_clk),.adc_rst (adc_rst),.adc_valid (adc_valid),.adc_data (adc_data[35:24]),.adc_data_q (adc_data[47:36]),.adc_or (1'b0),.dac_data (dac_data[35:24]),.adc_dcfilter_data_out (adc_dcfilter_data_out_2_s),.adc_dcfilter_data_in (adc_dcfilter_data_out_3_s),.adc_iqcor_valid (adc_valid_i1),.adc_iqcor_data (adc_data_i1),.adc_enable (adc_enable_i1),.up_adc_pn_err (up_adc_pn_err_s[2]),.up_adc_pn_oos (up_adc_pn_oos_s[2]),.up_adc_or (up_adc_or_s[2]),.up_rstn (up_rstn),.up_clk (up_clk),.up_wreq (up_wreq),.up_waddr (up_waddr),.up_wdata (up_wdata),.up_wack (up_wack_s[2]),.up_rreq (up_rreq),.up_raddr (up_raddr),.up_rdata (up_rdata_s[2]),.up_rack (up_rack_s[2]));// channel 3 (q)
axi_ad9361_rx_channel #(.Q_OR_I_N (1),.CHANNEL_ID (3),.DISABLE (MODE_1R1T),.USERPORTS_DISABLE (USERPORTS_DISABLE),.DATAFORMAT_DISABLE (DATAFORMAT_DISABLE),.DCFILTER_DISABLE (DCFILTER_DISABLE),.IQCORRECTION_DISABLE (IQCORRECTION_DISABLE))i_rx_channel_3 (.adc_clk (adc_clk),.adc_rst (adc_rst),.adc_valid (adc_valid),.adc_data (adc_data[47:36]),.adc_data_q (adc_data[35:24]),.adc_or (1'b0),.dac_data (dac_data[47:36]),.adc_dcfilter_data_out (adc_dcfilter_data_out_3_s),.adc_dcfilter_data_in (adc_dcfilter_data_out_2_s),.adc_iqcor_valid (adc_valid_q1),.adc_iqcor_data (adc_data_q1),.adc_enable (adc_enable_q1),.up_adc_pn_err (up_adc_pn_err_s[3]),.up_adc_pn_oos (up_adc_pn_oos_s[3]),.up_adc_or (up_adc_or_s[3]),.up_rstn (up_rstn),.up_clk (up_clk),.up_wreq (up_wreq),.up_waddr (up_waddr),.up_wdata (up_wdata),.up_wack (up_wack_s[3]),.up_rreq (up_rreq),.up_raddr (up_raddr),.up_rdata (up_rdata_s[3]),.up_rack (up_rack_s[3]));// common processor control
up_adc_common #(.ID (ID),.FPGA_TECHNOLOGY (FPGA_TECHNOLOGY),.FPGA_FAMILY (FPGA_FAMILY),.SPEED_GRADE (SPEED_GRADE),.DEV_PACKAGE (DEV_PACKAGE),.CONFIG (CONFIG),.DRP_DISABLE (1),.USERPORTS_DISABLE (USERPORTS_DISABLE),.GPIO_DISABLE (0),.START_CODE_DISABLE (0))i_up_adc_common (.mmcm_rst (mmcm_rst),.adc_clk (adc_clk),.adc_rst (adc_rst),.adc_r1_mode (adc_r1_mode),.adc_ddr_edgesel (adc_ddr_edgesel),.adc_pin_mode (),.adc_status (adc_status),.adc_sync_status (1'd0),
    .adc_status_ovf (adc_dovf),.adc_clk_ratio (32'd1),
    .adc_start_code (),.adc_sref_sync (),.adc_sync (),.adc_num_lanes (),.adc_sdr_ddr_n (),.up_adc_ce (),.up_pps_rcounter (up_pps_rcounter),.up_pps_status (up_pps_status),.up_pps_irq_mask (up_pps_irq_mask),.up_adc_r1_mode (),.up_status_pn_err (up_status_pn_err),.up_status_pn_oos (up_status_pn_oos),.up_status_or (up_status_or),.up_drp_sel (up_drp_sel),.up_drp_wr (up_drp_wr),.up_drp_addr (up_drp_addr),.up_drp_wdata (up_drp_wdata),.up_drp_rdata (up_drp_rdata),.up_drp_ready (up_drp_ready),.up_drp_locked (up_drp_locked),.up_usr_chanmax_out (),.up_usr_chanmax_in (8'd3),
    .up_adc_gpio_in (up_adc_gpio_in),.up_adc_gpio_out (up_adc_gpio_out),.up_rstn (up_rstn),.up_clk (up_clk),.up_wreq (up_wreq),.up_waddr (up_waddr),.up_wdata (up_wdata),.up_wack (up_wack_s[4]),.up_rreq (up_rreq),.up_raddr (up_raddr),.up_rdata (up_rdata_s[4]),.up_rack (up_rack_s[4]));// adc delay control
up_delay_cntrl #(.INIT_DELAY (INIT_DELAY),.DATA_WIDTH (13),.BASE_ADDRESS (6'h02))
  i_delay_cntrl (.delay_clk (delay_clk),.delay_rst (delay_rst),.delay_locked (delay_locked),.up_dld (up_dld),.up_dwdata (up_dwdata),.up_drdata (up_drdata),.up_rstn (up_rstn),.up_clk (up_clk),.up_wreq (up_wreq),.up_waddr (up_waddr),.up_wdata (up_wdata),.up_wack (up_wack_s[5]),.up_rreq (up_rreq),.up_raddr (up_raddr),.up_rdata (up_rdata_s[5]),.up_rack (up_rack_s[5]));endmodule// ***************************************************************************
// ***************************************************************************

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/936169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年GEO(AI搜索优化)公司口碑推荐排行榜单

摘要 随着AI技术的飞速发展,GEO(AI搜索优化)行业在2025年迎来爆发式增长,企业通过智能优化提升搜索效率和精准度,成为数字化转型的关键。本文基于行业数据和用户反馈,为您推荐2025年顶级GEO服务商,并附上详细比…

基于MATLAB的天线方向图综合与雷达天线设计

一、天线方向图综合基础理论 天线方向图综合是通过调整阵列单元激励参数(幅度、相位),使天线辐射方向图满足特定性能指标的过程。核心要素包括:阵列因子(AF) 描述阵列几何结构对辐射方向的影响,公式为:其中wn为…

​个人微信机器人开发

​个人微信机器人开发、微信二次开发机器人接口开发、java之微信机器人二次开发、微信机器人制作教程API文档接入指南 对接流程 1.申请api平台账号 2.开通接口权限 3.对接api 4.测试上线如何测试? 假如需要接收并处理…

Kong Gateway 实操实例:代理上游服务并配置限流插件 - 指南

Kong Gateway 实操实例:代理上游服务并配置限流插件 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

2025 年最新二手手机交易公司推荐排行榜:聚焦企业的专业与诚信实力,为消费者精选可靠选择

随着循环经济理念深入人心,二手手机交易市场迎来爆发式增长,但行业乱象也随之凸显。信息不透明导致消费者常遭遇 “货不对板”,电池健康度虚标、硬件隐患暗藏等问题频发;售后体系缺失让维权之路举步维艰,故障维修…

项目管理中的批量更新如何帮助节省时间和工作量?

批量更新(或批量编辑)是许多项目管理工具中的一项功能,允许您一次性更改多个项目(任务、问题、项目等)。此功能在管理项目时(尤其是大型或复杂的项目)可带来诸多益处。 您无需逐个打开每个任务或项目并更改字段…

深入解析:云服务器磁盘空间管理:binlog导致磁盘快速增长的应对策略与自动化实践

深入解析:云服务器磁盘空间管理:binlog导致磁盘快速增长的应对策略与自动化实践2025-10-13 14:51 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overf…

第三届大数据与数据挖掘国际会议(IEEE BDDM 2025)

数字经济浪潮中,全球数据量指数级增长,大数据与数据挖掘技术成为行业变革核心引擎。二者深度融合,通过高效处理海量复杂数据、提取关键信息辅助决策,在各领域创新应用不断涌现,创造巨大社会与经济效益。 在此背景…

CSS学习日记

2025.10.13 打卡 1. CSS选择器有五类:简单选择器(根据名称、id、类来选取元素) 组合器选择器(根据它们之间的特定关系来选取元素) 伪类选择器(根据特定状态选取元素) 伪元素选择器(选取元素的一部分并设置其样…

基于MATLAB的波导杆超声波传播仿真程序集设计与实现

1. 系统模型与核心算法 波导杆超声波传播的数值模拟需结合波动方程与波导边界条件,主要流程如下:几何建模:定义波导杆的几何参数(半径、长度、材料分层等)。 波动方程离散化:采用有限差分法(FDM)或有限元法(F…

for 循环中range的部分

range()函数的基本语法 range()函数用于生成一个指定范围内的数字序列,其基本语法如下: range(start, stop, step) Python start:可选参数,表示起始数字(默认为0)。 stop:必填参数,表示终止数字,不包括该数字…

2025中国不锈钢反应釜厂家TOP5权威推荐(附技术参数对比)

2025中国不锈钢反应釜厂家TOP5权威推荐(附技术参数对比)随着新能源产业与高端制造业的加速升级,反应釜设备作为化工、医药、锂电池材料等领域的核心生产载体,其性能稳定性与工艺适配性成为企业产能升级的关键。据智…

中电金信 :源启数据建模平台:自定义功能上线,实现高效模型管理

源启数据建模平台是源启数据资产平台面向企业模型统一管控而打造的多功能、全场景企业级模型设计与管理平台,支持企业级业务数据模型、应用系统模型及数据仓库模型的设计与管理。平台基于Web模式的画布界面,可实现逻…

国产软件项目管理革命:Gitee PPM如何重塑开发效率

国产软件项目管理革命:Gitee PPM如何重塑开发效率 在数字化转型浪潮席卷全球的当下,软件项目管理正面临前所未有的变革机遇。随着国内软件产业规模突破8万亿元大关,企业对高效、智能的项目管理工具需求呈现爆发式增…

网关本质论

Web应用网关:本质属于代理模式服务,将用户前端请求,通过代理服务,真实映射到真实物理服务器服务 代理层,得到HTTP请求后,可以做很多事情,例如身份认证、鉴权、API权限控制,限流,日志等

用最通俗易懂的方式解读以太坊的dAI团队和ERC-8004标准

给未来AI发“身份证”:以太坊的dAI计划为何让人兴奋? 想象一下,未来世界不再仅仅由人类上网冲浪、购物、工作,而是由无数个AI助手(我们叫它们“AI代理”)在为我们奔波。它们可以帮你比价购物、管理投资、甚至代表…

赋能智慧农业:ISUP协议视频平台EasyCVR智慧农业视频远程监控管理方案

赋能智慧农业:ISUP协议视频平台EasyCVR智慧农业视频远程监控管理方案在当今快速发展的农业领域,智慧农业已成为推动农业现代化、助力乡村全面振兴的新手段和新动能。随着信息技术的持续进步和城市化进程的加快,智慧…

集成开发工具 IDEA下载

集成开发工具IDEA搜索官方网站 IDEA官方网站找到对应的语言集成开发工具 拿java举例如:Java的IDEA)点击进入官网点击下载安装如图![如图]()会有两个版本一个旗舰版和社区版 “旗舰版收费,社区版免费。根据自…

10.12一周观察

这一周情绪起伏很大,不是在低谷就是高涨,几乎没有平稳的时刻。身体也出现各种不适:胃胀、早晨腹痛、头晕、眼疲劳,下巴的痘痘冒个不停。整个人乏力没精神,手脚冰凉,对什么都提不起兴趣。虽然睡得着,但总觉睡不够…

视频融合平台EasyCVR在智慧水利中的实战应用:构建全域感知与智能预警平台

视频融合平台EasyCVR在智慧水利中的实战应用:构建全域感知与智能预警平台随着物联网、大数据、人工智能等技术的飞速发展,智慧水利建设已成为保障水安全、优化水资源配置、提升水灾害防御能力的关键路径。本文将深入…