📄 sync_gen_50m.v
字号:
////////////////////////////////////////////////////////////////////////////////
// __ ___ _ ___ ____ //
// \ \ / (_) |__ ___ ___|_ _/ ___| //
// \ \ / /| | '_ \ / _ \/ __|| | | //
// \ V / | | |_) | __/\__ \| | |___ //
// \_/ |_|_.__/ \___||___/___\____| //
// //
////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2003-2006 VibesIC, Inc. All rights reserved. //
//----------------------------------------------------------------------------//
// This source code is provided by VibesIC, and be verified on VibesIC FPGA //
// development kit. The source code may be used and distributed without //
// restriction provided that this copyright statement is not removed from the //
// file and that any derivative work contains the original copyright notice //
// and the associated disclaimer. //
//----------------------------------------------------------------------------//
// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED //
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF //
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE//
// AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, //
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO,//
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,OR PROFITS; //
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, //
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR //
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF //
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. //
//----------------------------------------------------------------------------//
// 本设计由威百仕( VibesIC )提供,并在其产品中验证通过,您可以在此基础上修改,//
// 复制并分发,但请您保留版权声明部分。我们并不承诺本设计可以用做商业产品,同时//
// 我们不保证设计的通用性。为了方便更新以及修改请保留设计的版本信息,并对自行 //
// 修改部分添加足够的注释。对设计如有其他建议,请到网站进行讨论。 //
// //
////////////////////////////////////////////////////////////////////////////////
// Company: www.richic.com //
// Company bbs: www.edacn.net //
// Engineer: mail007 (Gavin.xue) //
// //
// Target Device: XC3S400-PQ208 //
// Tool versions: Simulation: ModelSim SE 6.2a //
// Synthesis: XST(ise8.1...sp3) //
// Place&Routing: ISE8.1...sp3 //
// Others tools: UltraEdit-32 12.10a //
// Create Date: 2005-9-6 10:59 //
// Description: //
// //
// LOG: //
// 1. Revision 1.0 (Initial version) 2005-9-6 10:59 mail007 //
// //
// 2. Revision 1.1 2006-12-27 17:12 alex_yang //
// Updata ISE version from v6.3 to v8.1 //
// Modify for VX-SP306 //
////////////////////////////////////////////////////////////////////////////////
module sync_gen_50m(
clk,
rst_n,
hsync,
vsync,
valid,
x_cnt,
y_cnt
);
input clk;
input rst_n;
output hsync;
output vsync;
output valid;
output [9:0] x_cnt;
output [9:0] y_cnt;
reg hsync;
reg vsync;
reg valid;
reg [9:0] x_cnt;
reg [9:0] y_cnt;
// ---------------------------------------------------------------------------
// 两个Always 中可以使用相同的判断条件
// ---------------------------------------------------------------------------
always @ ( posedge clk or negedge rst_n )
if ( !rst_n )
x_cnt <= 10'd0;
else if ( x_cnt == 10'd1000 )
x_cnt <= 10'd0;
else
x_cnt <= x_cnt + 1'b1;
always @ ( posedge clk or negedge rst_n )
if ( !rst_n )
y_cnt <= 10'd0;
else if ( y_cnt == 10'd665 )
y_cnt <= 10'd0;
else if ( x_cnt == 10'd1000 )
y_cnt <= y_cnt + 1'b1;
// ---------------------------------------------------------------------------
// hsync <= x_cnt <= 10'd50;中第一个“<=”为赋值语句,第二个“<=”为比较语句
// 本代码的操作为:比较后再赋值。
// ---------------------------------------------------------------------------
always @ ( posedge clk or negedge rst_n )
if ( !rst_n )
begin
hsync <= 1'b0;
vsync <= 1'b0;
end
else
begin
hsync <= x_cnt <= 10'd50; //产生hsync信号
vsync <= y_cnt <= 10'd6; //产生vsync信号
end
always @ ( posedge clk or negedge rst_n )
if ( !rst_n )
valid <= 1'b0;
else
valid <= ( ( x_cnt > 10'd180 ) && ( x_cnt < 10'd980) &&
( y_cnt > 10'd35) && ( y_cnt < 10'd635) );
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -