基于lattice的SDI IP核的调用

  • 基于lattice的SDI IP核的调用
  • IP核配置
  • IP核调用


基于lattice的SDI IP核的调用

来公司实习,第一个接触的FPGA芯片就是lattice家的,和Xilinx的IP核相比,lattice的IP核配置起来更简单,当然了,lattice的功能核Xilinx相比就没有那么强大了。

IP核配置

1.点开箭头所示图标,进入IP核列表界面

SEM ip核手册_SEM ip核手册

2.列表中如果有,就直接选 Tri_Rate SDI PHY

SEM ip核手册_IP_02


3. 如果没有,需要点击箭头所示图标,下载之后才能使用(下载速度较慢),这里可以自提

链接: https://pan.baidu.com/s/1ndTHx2lnNmVPswKM0sayLQ .

提取码:o8u0

SEM ip核手册_硬件_03

  1. 找到IP核之后,点开界面如下图所示,可以自由选择的选项并不多。

(1) PHY Function: 如果做的是数据的发送就选择Tx,接收选择Rx,想要拥有两个功能就选择Both。
(2) 如果你的视频源是3G leveal B的,可以把3G leveal 勾选上
(3) 我只用到了插入行号的功能,VPID和CRC都没有勾选。
(4) 选择数据位宽(8bit/10bit)
最后点击Generate完成配置

SEM ip核手册_数据_04

IP核调用

  1. 找到刚刚IP存储的文件夹,找到.v的文件,将里面的管脚信息复制出来
  2. 配置完的端口如下所示。
SDI_PHY_module SDI_PHY_module1(
      //=====INPUTS
      //===== global input signals 
      //===== transmitter input signals 
					.pd_in(pd_in),         // parallel input data for transmit
					.pdi_clk(tx_half_clk),       // clock input for the parallel input data
					.hd_sdn_in(1),     // indicates if input is in HD=1 or SD=0 format
					.trs_in(trs1_in),        // TRS input- SAV and EAV
					  
					.ln1_set(ln1_set),       // indicates a valid line number on ln_in port
					.ln1_in(ln1_in),        // line number input

			  //===== receiver input signals 

			  //=====OUTPUTS
			  //===== transmitter output signals 
					.txdata(tx_data0),        // Parallel transmit data output for PCS

      //===== receiver output signals 
      //===== global input signal 
                    .rstn(fpga_nrst)           // system reset
      );

其中:

  • 输入部分

pd_in:接收到的16位或20位并行视频数据,包含Y和C数据。

pdi_clk:从PCS中出来的时钟引脚(1080p对应148.5)

hd_sdn_in:接收的分辨率,如果是sd的视频源,就填0,如果是hd及以上的视频源就填1。

trs_in:将SAV(行首),EAV(行尾)标志信号给到这里,此信号对应到3FF处为1。

ln_set: 行数对应的位置,可以在每行有效视频区的末位。

ln_in:行计数,将行计数器的数据输出给ln_in。

  • 输出部分

txdata: 输出的数据。

rstn:复位信号,从PCS中输出的复位信号。

以上就是完整的SDI IP核调用和使用的过程,但是只使用这一个IP核还不能看到现象,还需要视频源或者自己生成彩色信息,并配上PCS才能看到最基本的现象。当然了,也可以通过逻辑分析仪抓取信号,来检查自己的程序,希望大家都能配置成功,有什么问题可以留言哦!