模板-V1
模型功能
- 將視頻傳輸中的數據導入到總線上,方便后續的處理和拓展
模型框圖
video_interface.sv
`include "../public_files/public_macro.svh"
interface video_interface;
logic clk;
logic rst_n;
logic fsync;
logic vsync;
logic hsync;
logic psync;
logic [`WD_VIDEO_VDATA - 1:0] vdata;
logic assert_open; //assert open flag
endinterface
public_macro.svh
// --------------------------------------------------------------------
// width macro
`define WD_VIDEO_VDATA 24
public_libs.svh
// ######################################################################
// lib include
`include "../public_interface/video_interface.sv"
tb_video_system_top.sv
// --------------------------------------------------------------------
// add sim libs of every scene
`include "./public_files/public_libs.svh"
`include "./public_files/public_macro.svh"
`timescale 1ns / 1ps
module tb_video_system_top #(
)(
);
// --------------------------------------------------------------------
// add system clock and rst
reg i_sys_clk = 0;
reg i_sys_resetn = 0;
always #5 i_sys_clk = ~i_sys_clk;
initial #1000 i_sys_resetn = 1;
// --------------------------------------------------------------------
// add video interface
//src
video_interface src_video_itf();
assign src_video_itf.clk = i_sys_clk;
assign src_video_itf.rst_n = i_sys_resetn;
//dst
video_interface dst_video_itf();
assign dst_video_itf.clk = i_sys_clk;
assign dst_video_itf.rst_n = i_sys_resetn;
// --------------------------------------------------------------------
// add DUT to test
video_gray_cacu#(
.MD_SIM_ABLE ( 0 ),
.WD_DATA ( 24 ),
.WD_BYTE ( 8 ),
.WD_ERR_INFO ( 4 )
)u_video_gray_cacu(
.i_sys_clk ( i_sys_clk ),
.i_sys_resetn ( i_sys_resetn ),
.s_video_src_fsync ( src_video_itf.fsync ),
.s_video_src_vsync ( src_video_itf.vsync ),
.s_video_src_hsync ( src_video_itf.hsync ),
.s_video_src_psync ( src_video_itf.psync ),
.s_video_src_vdata ( src_video_itf.vdata ),
.m_video_dst_fsync ( dst_video_itf.fsync ),
.m_video_dst_vsync ( dst_video_itf.vsync ),
.m_video_dst_hsync ( dst_video_itf.hsync ),
.m_video_dst_psync ( dst_video_itf.psync ),
.m_video_dst_vdata ( dst_video_itf.vdata ),
.m_err_video_info1 ( )
);
endmodule
層次說明
- 除了頂層文件,其他所有文件都在二級目錄,包括后面新增的文件,都將以一二級目錄的形式進行
- 頂層調用場景scene,scene調用對應階段phase的對應任務
- 由于每次的調用都應該是可以任意連接的,所以將scene和phase放置在同一級沒有問題
實現步驟
建立總線合集
- 如模型所示,編寫帶有各種信息的總線
- 由于總線具有指代性,所以可以在不改變原有信號的基礎上,不斷拓展而不需要考慮中間層的連接
- 總線主要是提供數據通道,同時也是驅動的最小單元
- 基于總線的驅動可以更好地滿足后續地拓展和維護地需求
構建公共文件
- 使用public_macro將所有的常數匯集,以免后續由于硬件升級導致需要大量修改參數
- 使用public_libs將所有的類以及各種結構包含在一個文件中方便頂層調用,這些調用是存在順序的,在仿真時尤為注意
構建帶總線集合的仿真頂層
- 例化video總線,
- 連接總線的各個元素。如時鐘、信號,由于暫時未加入斷言,所以斷言標志未連接
- 例化DUT,完成一個系統仿真所需的基本要件
最終效果
vivado視圖

調用接口
源碼壓縮包
======== ======\\ ======= -
|| || \\ // \\ /-\
|| || || // // \\
|| || // || // \\
====== ======= || === ========
|| || || \\ // \\
|| || \\ || // \\
|| || \\ // // \\
|| || ======= // \\
作者:綠葉落秋風,專注FPGA技術分析和分享,轉載請注明原文鏈接:http://www.rzrgm.cn/electricdream/p/18119904,文中資源鏈接如下:
1. GITHUB開源倉庫
浙公網安備 33010602011771號