`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 17:19:25 05/13/2014
//----------------------------------------------------------------------------------
//-- Company: Digilent Ro
//-- Engineer: xiabo
//-- Design Name: VmodCAM Reference Design 2
//-- Module Name: VmodCAM_Ref - Behavioral
//-- Project Name:
//-- Target Devices:
//-- Tool versions:
//-- Description: The design shows off the video feed from two cameras located on
//-- a VmodCAM add-on board connected to an Atlys. The video feeds are displayed on
//-- a DVI-capable flat panel at 1600x900@60Hz resolution. Each of the video feeds
//-- is written to a frame buffer port to different locations in the RAM. Switch 7
//-- can change the display from one feed to the other.
//--
//-- Dependencies:
//-- digilent VHDL library (Video, VideoTimingCtl, TWICtl, TMDSEncoder,
//-- DVITransmitter, SerializerN_1...)
//--
//-- Revision:
//-- Revision 0.01 - File Created
//-- Additional Comments:
//--
//----------------------------------------------------------------------------------
module VmodCAM_Ref #(
parameter C3_NUM_DQ_PINS = 16,
parameter C3_MEM_ADDR_WIDTH = 13,
parameter C3_MEM_BANKADDR_WIDTH = 3
)
(
output TMDS_TX_2_P ,
output TMDS_TX_2_N ,
output TMDS_TX_1_P ,
output TMDS_TX_1_N ,
output TMDS_TX_0_P ,
output TMDS_TX_0_N ,
output TMDS_TX_CLK_P ,
output TMDS_TX_CLK_N , input[7:0] SW_I, //: in STD_LOGIC_VECTOR(7 downto 0);
output[7:0] LED_O , //: out STD_LOGIC_VECTOR(7 downto 0);
input CLK_I , //: in STD_LOGIC;
input RESET_I , //: in STD_LOGIC;
//----------------------------------------------------------------------------------
//-- Camera Board signals
//----------------------------------------------------------------------------------
inout CAMA_SDA ,//
inout CAMA_SCL ,//
input[7:0] CAMA_D_I ,// STD_LOGIC_VECTOR (7 downto 0); -- inout Workaround for IN_TERM bug AR# 40818
input CAMA_PCLK_I ,// -- inout Workaround for IN_TERM bug AR# 40818
output CAMA_MCLK_O , // out STD_LOGIC;
input CAMA_LV_I ,// STD_LOGIC; -- inout Workaround for IN_TERM bug AR# 40818
input CAMA_FV_I ,// STD_LOGIC; -- inout Workaround for IN_TERM bug AR# 40818
output CAMA_RST_O ,//out STD_LOGIC; --Reset active LOW
output CAMA_PWDN_O ,//out STD_LOGIC; --Power-down active HIGH output CAMX_VDDEN_O,//: out STD_LOGIC; //-- common power supply enable (can do power cycle) inout CAMB_SDA ,//
inout CAMB_SCL ,//
input[7:0] CAMB_D_I ,// STD_LOGIC_VECTOR (7 downto 0); -- inout Workaround for IN_TERM bug AR# 40818
input CAMB_PCLK_I ,// -- inout Workaround for IN_TERM bug AR# 40818
output CAMB_MCLK_O ,//: out STD_LOGIC;
input CAMB_LV_I ,// STD_LOGIC; -- inout Workaround for IN_TERM bug AR# 40818
input CAMB_FV_I ,// STD_LOGIC; -- inout Workaround for IN_TERM bug AR# 40818
output CAMB_RST_O ,//: out STD_LOGIC; --Reset active LOW
output CAMB_PWDN_O,// : out STD_LOGIC; --Power-down active HIGH
//----------------------------------------------------------------------------------
//-- DDR2 Interface
//----------------------------------------------------------------------------------
inout [C3_NUM_DQ_PINS-1 : 0] mcb3_dram_dq ,// inout std_logic_vector(C3_NUM_DQ_PINS-1 downto 0);
output[C3_MEM_ADDR_WIDTH-1:0] mcb3_dram_a ,// out std_logic_vector(C3_MEM_ADDR_WIDTH-1 downto 0);
output[C3_MEM_BANKADDR_WIDTH-1:0] mcb3_dram_ba ,// out std_logic_vector(C3_MEM_BANKADDR_WIDTH-1 downto 0);
output mcb3_dram_ras_n ,// out std_logic;
output mcb3_dram_cas_n ,// out std_logic;
output mcb3_dram_we_n ,// out std_logic;
output mcb3_dram_odt ,// out std_logic;
output mcb3_dram_cke ,// out std_logic;
output mcb3_dram_dm ,// out std_logic;
output mcb3_dram_udqs ,// inout std_logic;
inout mcb3_dram_udqs_n ,// inout std_logic;
inout mcb3_rzq ,// inout std_logic;
inout mcb3_zio ,// inout std_logic;
output mcb3_dram_udm ,// out std_logic;
inout mcb3_dram_dqs ,// inout std_logic;
inout mcb3_dram_dqs_n ,// inout std_logic;
output mcb3_dram_ck ,// out std_logic;
output mcb3_dram_ck_n // out std_logic
);
//----------------------------------------------------------------------------------
//-- System unit define
//-- wire
//---------------------------------------------------------------------------------- wire SysClk, PClk, PClkX2, SysRst, SerClk, SerStb ;//: std_logic;
wire MSel; //: std_logic_vector(0 downto 0); wire VtcHs, VtcVs, VtcVde, VtcRst ;//: std_logic;
wire VtcHCnt, VtcVCnt ;//: NATURAL; wire CamClk, CamClk_180, CamAPClk, CamBPClk, CamADV, CamBDV, CamAVddEn, CamBVddEn ;//: std_logic;
wire [15:0] CamAD;
wire [15:0] CamBD ;// std_logic_vector(15 downto 0);
wire dummy_t, int_CAMA_PCLK_I, int_CAMA_FV_I, int_CAMA_LV_I,int_CAMB_PCLK_I, int_CAMB_FV_I, int_CAMB_LV_I; //: std_logic;
wire [7:0] int_CAMA_D_I;
wire [7:0] int_CAMB_D_I; // std_logic_vector(7 downto 0); wire ddr2clk_2x, ddr2clk_2x_180, mcb_drp_clk, pll_ce_0, pll_ce_90, pll_lock, async_rst ;//: std_logic;
wire FbRdy, FbRdEn, FbRdRst, FbRdClk; //: std_logic;
wire [15:0] FbRdData ;//: std_logic_vector(16-1 downto 0);
wire FbWrARst, FbWrBRst, int_FVA, int_FVB ;//: std_logic; assign LED_O = {VtcHs , VtcHs , VtcVde , async_rst , MSel , 3'b000};
//----------------------------------------------------------------------------------
//-- System Control Unit
//-- This component provides a System Clock, a Synchronous Reset and other signals
//-- needed for the 40:4 serialization:
//-- - Serialization clock (5x System Clock)
//-- - Serialization strobe
//-- - 2x Pixel Clock
//----------------------------------------------------------------------------------
SysCon Inst_SysCon(
.CLK_I ( CLK_I),
.CLK_O ( open),
.RSTN_I ( RESET_I),
.SW_I ( SW_I),
.SW_O ( open),
.RSEL_O ( open), //--resolution selector synchronized with PClk
.MSEL_O ( MSel), //--mode selector synchronized with PClk
.CAMCLK_O ( CamClk),
.CAMCLK_180_O ( CamClk_180),
.PCLK_O ( PClk),
.PCLK_X2_O ( PClkX2),
.PCLK_X10_O ( SerClk),
.SERDESSTROBE_O ( SerStb), .DDR2CLK_2X_O ( DDR2Clk_2x),
.DDR2CLK_2X_180_O ( DDR2Clk_2x_180),
.MCB_DRP_CLK_O ( mcb_drp_clk),
.PLL_CE_0_O ( pll_ce_0),
.PLL_CE_90_O ( pll_ce_90),
.PLL_LOCK ( pll_lock),
.ASYNC_RST ( async_rst)
); //----------------------------------------------------------------------------------
//-- Video Timing Controller
//-- Generates horizontal and vertical sync and video data enable signals.
//----------------------------------------------------------------------------------
VideoTimingCtl Inst_VideoTimingCtl (
.PCLK_I ( PClk),
.RSEL_I ( R1600_900P),// --this project supports only 1600x900
.RST_I ( VtcRst),
.VDE_O ( VtcVde),
.HS_O ( VtcHs),
.VS_O ( VtcVs),
.HCNT_O ( VtcHCnt),
.VCNT_O ( VtcVCnt)
);
assign VtcRst = async_rst | (!FbRdy);
//----------------------------------------------------------------------------------
//-- Frame Buffer
//----------------------------------------------------------------------------------
parameter DEBUG_EN = 0;
parameter COLORDEPTH = 16;
FBCtl #(
.DEBUG_EN(DEBUG_EN),
.COLORDEPTH(COLORDEPTH)
)
Inst_FBCtl(
.RDY_O ( FbRdy),
.ENC ( FbRdEn),
.RSTC_I ( FbRdRst),
.DOC ( FbRdData),
.CLKC ( FbRdClk),
.RD_MODE ( MSel), .ENA ( CamADV),
.RSTA_I ( FbWrARst),
.DIA ( CamAD),
.CLKA ( CamAPClk), .ENB ( CamBDV),
.RSTB_I ( FbWrBRst),
.DIB ( CamBD),
.CLKB ( CamBPClk), .ddr2clk_2x ( DDR2Clk_2x),
.ddr2clk_2x_180 ( DDR2Clk_2x_180),
.pll_ce_0 ( pll_ce_0),
.pll_ce_90 ( pll_ce_90),
.pll_lock ( pll_lock),
.async_rst ( async_rst),
.mcb_drp_clk ( mcb_drp_clk),
.mcb3_dram_dq ( mcb3_dram_dq),
.mcb3_dram_a ( mcb3_dram_a),
.mcb3_dram_ba ( mcb3_dram_ba),
.mcb3_dram_ras_n ( mcb3_dram_ras_n),
.mcb3_dram_cas_n ( mcb3_dram_cas_n),
.mcb3_dram_we_n ( mcb3_dram_we_n),
.mcb3_dram_odt ( mcb3_dram_odt),
.mcb3_dram_cke ( mcb3_dram_cke),
.mcb3_dram_dm ( mcb3_dram_dm),
.mcb3_dram_udqs ( mcb3_dram_udqs),
.mcb3_dram_udqs_n ( mcb3_dram_udqs_n),
.mcb3_rzq ( mcb3_rzq),
.mcb3_zio ( mcb3_zio),
.mcb3_dram_udm ( mcb3_dram_udm),
.mcb3_dram_dqs ( mcb3_dram_dqs),
.mcb3_dram_dqs_n ( mcb3_dram_dqs_n),
.mcb3_dram_ck ( mcb3_dram_ck),
.mcb3_dram_ck_n ( mcb3_dram_ck_n)
); assign FbRdEn = VtcVde;
assign FbRdRst = async_rst;
assign FbRdClk = PClk;
//--Register FV signal to meet timing for FbWrXRst
InputSync Inst_InputSync_FVA(
.D_I ( int_CAMA_FV_I),
.D_O ( int_FVA),
.CLK_I ( CamAPClk)
);
InputSync Inst_InputSync_FVB(
.D_I ( int_CAMB_FV_I),
.D_O ( int_FVB),
.CLK_I ( CamBPClk)
); assign FbWrARst = async_rst | ( !int_FVA);
assign FbWrBRst = async_rst | ( !int_FVB); //----------------------------------------------------------------------------------
//-- DVI Transmitter
//----------------------------------------------------------------------------------
wire [7:0] FbRdData_Red;
wire [7:0] FbRdData_Green;
wire [7:0] FbRdData_Blue;
assign FbRdData_Red = {FbRdData[15 : 11],3'b000};
assign FbRdData_Green = {FbRdData[10 : 5] ,2'b00 };
assign FbRdData_Blue = {FbRdData[4 : 0] ,3'b000}; DVITransmitter Inst_DVITransmitter(
// .RED_I ( FbRdData[15 : 11] & "000"),
// .GREEN_I ( FbRdData[10 : 5] & "00"),
// .BLUE_I ( FbRdData[4 : 0] & "000"),
.RED_I ( FbRdData_Red),
.GREEN_I ( FbRdData_Green),
.BLUE_I ( FbRdData_Blue),
.HS_I ( VtcHs),
.VS_I ( VtcVs),
.VDE_I ( VtcVde),
.PCLK_I ( PClk),
.PCLK_X2_I ( PClkX2),
.SERCLK_I ( SerClk),
.SERSTB_I ( SerStb),
.TMDS_TX_2_P ( TMDS_TX_2_P),
.TMDS_TX_2_N ( TMDS_TX_2_N),
.TMDS_TX_1_P ( TMDS_TX_1_P),
.TMDS_TX_1_N ( TMDS_TX_1_N),
.TMDS_TX_0_P ( TMDS_TX_0_P),
.TMDS_TX_0_N ( TMDS_TX_0_N),
.TMDS_TX_CLK_P ( TMDS_TX_CLK_P),
.TMDS_TX_CLK_N ( TMDS_TX_CLK_N)
); //----------------------------------------------------------------------------------
//-- Camera A Controller
//----------------------------------------------------------------------------------
camctl Inst_camctlA(
.D_O ( CamAD),
.PCLK_O ( CamAPClk),
.DV_O ( CamADV),
.RST_I ( async_rst),
.CLK ( CamClk),
.CLK_180 ( CamClk_180),
.SDA ( CAMA_SDA),
.SCL ( CAMA_SCL),
.D_I ( CAMA_D_I),
.PCLK_I ( CAMA_PCLK_I),
.MCLK_O ( CAMA_MCLK_O),
.LV_I ( CAMA_LV_I),
.FV_I ( CAMA_FV_I),
.RST_O ( CAMA_RST_O),
.PWDN_O ( CAMA_PWDN_O),
.VDDEN_O ( CamAVddEn)
);
//----------------------------------------------------------------------------------
//-- Camera B Controller
//----------------------------------------------------------------------------------
camctl Inst_camctlB(
.D_O ( CamBD),
.PCLK_O ( CamBPClk),
.DV_O ( CamBDV),
.RST_I ( async_rst),
.CLK ( CamClk),
.CLK_180 ( CamClk_180),
.SDA ( CAMB_SDA),
.SCL ( CAMB_SCL),
.D_I ( CAMB_D_I),
.PCLK_I ( CAMB_PCLK_I),
.MCLK_O ( CAMB_MCLK_O),
.LV_I ( CAMB_LV_I),
.FV_I ( CAMB_FV_I),
.RST_O ( CAMB_RST_O),
.PWDN_O ( CAMB_PWDN_O),
.VDDEN_O ( CamBVddEn)
);
assign CAMX_VDDEN_O = CamAVddEn && CamBVddEn; endmodule

VmodCam top verilog的更多相关文章

  1. 基于Verilog HDL整数乘法器设计与仿真验证

    基于Verilog HDL整数乘法器设计与仿真验证 1.预备知识 整数分为短整数,中整数,长整数,本文只涉及到短整数.短整数:占用一个字节空间,8位,其中最高位为符号位(最高位为1表示为负数,最高位为 ...

  2. system verilog的一些总结(从其他博客复制来的)

    转载自 http://blog.sina.com.cn/s/blog_e7fec2630101f5t9.html SystemVerilog是一种硬件描述和验证语言(HDVL),它基于IEEE 136 ...

  3. 【仿真】【modelsim】:verilog功能仿真流程

    一.编写verilog源文件,在diamond中编译.编写testbench文件.在diamond设置中将仿真工具设置为modelsim,运行仿真向导 二.自动进入modelsim, 编译全部 运行仿 ...

  4. VmodCAM图像采集 VGA显示

    先上图 总体框图 效果图 效果不是很好,因为暂时用的是zedboard自带的VGA,其只能RGB只有3*3*3的彩色度 VmodCAM原理图 VmodCAM的zedboard管脚约束见:http:// ...

  5. 对Verilog 初学者比较有用的整理(转自它处)

    *作者: Ian11122840    时间: 2010-9-27 09:04                                                              ...

  6. Verilog 模块参数重定义(转)

    Verilog重载模块参数: 当一个模块引用另外一个模块时,高层模块可以改变低层模块用parameter定义的参数值,改变低层模块的参数值可采用以下两种方式: 1)defparam 重定义参数语法:d ...

  7. 不可综合的verilog语句分析

    前半部分转自http://www.cnblogs.com/Mrseven/articles/2247657.html,后半部分为自己测试结果. 基础知识:verilog 不可综合语句 (1)所有综合工 ...

  8. verilog抓外部低频输入信号的上升沿和下降沿

    版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/7220107.html 作者:窗户 Q ...

  9. 基于UVM的verilog验证

    Abstract 本文介绍UVM框架,并以crc7为例进行UVM的验证,最后指出常见的UVM验证开发有哪些坑,以及怎么避免. Introduction 本例使用环境:ModelSim 10.2c,UV ...

随机推荐

  1. sqlserver 行转列 语文,数学,物理,化学

    数据库查询行转列 1.原数据库值 stdname stdsubject result 张三 语文 张三 数学 张三 物理 李四 语文 李四 数学 李四 物理 李四 化学 李四 化学 2.要得到如下表 ...

  2. cocos2dx-lua使用UIListView制作二级折叠菜单

    折叠菜单,用过jquery accordion的同学都知道是啥玩艺儿~,图片效果就是介样: cocos2dx不带有此控件,因此我们动手来实现一个. 原理很简单,展开的时候往listview里inser ...

  3. 虚拟机+ubuntu 图形界面和终端界面的切换

    虚拟机环境,在图形界面和文本界面间切换:1  VMWare虚拟机下,由图形界面切换到文本界面,和虚拟机设置有关,默认VM占用Ctrl+Alt为热键,所以由图形界面切换到文本界面的组合键为: Ctrl+ ...

  4. java笔记 chapter1 java是什么,能干什么,有什么,特点,开发环境

    一,java是什么 二,java能干什么 三,java有什么 四,java的特点 五,java的三大特性:虚拟机,垃圾回收和代码安全 六,构建JSE开发环境:下载安装jdk和配置环境变量 七,编写并运 ...

  5. Android 高级UI设计笔记11:Gallery(画廊控件)之Gallery基本使用

    1. 这里要向大家介绍Android控件Gallery(画廊控件) Gallery控件主要用于横向显示图像列表,不过按常规做法.Gallery组件只能有限地显示指定的图像.也就是说,如果为Galler ...

  6. 使用 mina 传输大字节数组

    转载自:http://seara520.blog.163.com/blog/static/16812769820103214817781/ 使用mina传输超过2k以上的数据时(采用tcp方式,如果是 ...

  7. SVN Server导项目到本地库时提示"方法OPTIONS失败与无法连接到服务器"

    方法 OPTIONS 失败于 “https://xxxx/svn/xxxx”: 无法连接到服务器 (https://xxxx) 要留意  https 使用了443 端口,检查防火墙是否开放了该端口. ...

  8. 跟我一起玩转FineUI之嵌套表格

    最近一直在研究FineUI(http://www.fineui.com/),那么什么是FineUI呢,FineUI是基于 ExtJS 的专业 ASP.NET 控件库.创建 No JavaScript, ...

  9. Jsp万能密码漏洞修复例子

    更多详细内容请查看:http://www.111cn.net/jsp/Java/58610.htm 如果网站出现这种“万能密码”漏洞该怎么办呢 'or'='or' 漏洞修复 方法有很多在这里介绍两种, ...

  10. js 用window.open(参数) 打开新窗口,在新窗口怎么获取传过来的参数

    unction openwin(taskno){window.open ('playIt.jsp?taskno='+taskno,'play','height=100,width=400,toolba ...