基于lattice的SDI IP核的调用
- 基于lattice的SDI IP核的调用
- IP核配置
- IP核调用
基于lattice的SDI IP核的调用
来公司实习,第一个接触的FPGA芯片就是lattice家的,和Xilinx的IP核相比,lattice的IP核配置起来更简单,当然了,lattice的功能核Xilinx相比就没有那么强大了。
IP核配置
1.点开箭头所示图标,进入IP核列表界面
2.列表中如果有,就直接选 Tri_Rate SDI PHY
3. 如果没有,需要点击箭头所示图标,下载之后才能使用(下载速度较慢),这里可以自提
链接: https://pan.baidu.com/s/1ndTHx2lnNmVPswKM0sayLQ .
提取码:o8u0
- 找到IP核之后,点开界面如下图所示,可以自由选择的选项并不多。
(1) PHY Function: 如果做的是数据的发送就选择Tx,接收选择Rx,想要拥有两个功能就选择Both。
(2) 如果你的视频源是3G leveal B的,可以把3G leveal 勾选上
(3) 我只用到了插入行号的功能,VPID和CRC都没有勾选。
(4) 选择数据位宽(8bit/10bit)
最后点击Generate完成配置
IP核调用
- 找到刚刚IP存储的文件夹,找到.v的文件,将里面的管脚信息复制出来
- 配置完的端口如下所示。
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才能看到最基本的现象。当然了,也可以通过逻辑分析仪抓取信号,来检查自己的程序,希望大家都能配置成功,有什么问题可以留言哦!