USRP_B210之FPGA分析3:b200_io模块的简单分析

先上接口代码:

//
// Copyright 2013 Ettus Research LLC
// Copyright 2017 Ettus Research, a National Instruments Company
//
// SPDX-License-Identifier: LGPL-3.0-or-later
//
//
//------------------------------------------------------------------
//
// In SISO mode, we output a clock thats 1x the frequency of the Catalina
// source-synchronous bus clock to be used as the radio_clk.
// In MIMO mode, we output a clock thats 1/2 the frequency of the Catalina
// source-synchronous bus clock to be used as the radio_clk.
//
//------------------------------------------------------------------
/*
https://blog.csdn.net/weixin_39789553/article/details/114385676
*/
module b200_io
    (
     input 	  reset,
     input 	  mimo,

     // Baseband sample interface
     output 	  radio_clk,
     output [11:0] rx_i0,
     output [11:0] rx_q0,
     output [11:0] rx_i1,
     output [11:0] rx_q1,
     input [11:0]  tx_i0,
     input [11:0]  tx_q0,
     input [11:0]  tx_i1,
     input [11:0]  tx_q1,

     // Catalina interface
     input 	  rx_clk,
     input 	  rx_frame,
     input [11:0]  rx_data,
     output 	  tx_clk,
     output 	  tx_frame,
     output [11:0] tx_data
     );

这个模块就是接AD9361的模块,除了AD9361给过来的rx_clk,没有别的时钟给FPGA,相反还产生了一个时钟radio_clk供给模块外部用以CDC同步和作为基带时钟。

我们继续看下面的实现代码,这里看到代码主要用到了以下几个模块:

IDDR2实现差分信号的接入。

ODDR2实现差分信号输出。

BUFGMUX实现局域时钟的多路选择。

BUFG实现输入时钟的缓冲。

BUFIO2实现时钟分频。

我看这代码写得有不太正规,我尝试了做了修改,使用generate语句进行了规整。

   genvar y ;
   generate
      for(y = 0; y < 12;y = y + 1)
	begin : get_pins
          IDDR2 #(
		 .DDR_ALIGNMENT("C0"))
         iddr2_i0 (
		   .Q0(rx_q[y]),
		   .Q1(rx_i[y]),
		   .C0(io_clk_lb),
		   .C1(io_clk_lb_b),
		   .CE(1'b1),
		   .D(rx_data[y]),
		   .R(1'b0),
		   .S(1'b0));

	end
   endgenerate

将12段RX的IDDR2都用这个语句规整起来了,实际编译通过,生成BIT流还没有下板子验证,应该没有问题,将在之后进行实际下板子验证。

这里如果大家要深入研究时序,可以参考AD9361的接口时序,以及XILINX官方对应器件的时钟以及接口部分的数据手册。这里不再展开。

{{aAx8MOMTX8HOvmxOoxmwMHHoviVIx8IOiWOmTUIUUixiwiWXI8UIU8MowM8oWHoMVoXXXXVTUTOHUTT8VXToVMwXivMHV8iWTwIiOiiVivwIOOIVxU8o8UVHxUvIVm8OVXomXwomiIM8vOxOHHIVZz}}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值