没有合适的资源?快使用搜索试试~ 我知道了~
首页modelsim+tcl简明教程
资源详情
资源评论
资源推荐

Copyright (c) 2009 yadog
【yadog 原创】Tcl+Modelsim 简明操作教程
本文的例子基于一个非常常见的时钟分频的工程,分频采用计数器实现。
本文的目的不在于如何写分频器,也不在于如何建立 Modelsim 工程,而在于如何使用
Tcl 控制 Modelsim 仿真!
本文的编程语言为 Verilog。
一、准备工作
1. 设计源文件 clk_div.v。
思路很简单,对输入信号使用计数器方式进行分频。
输入以下代码,保存文件为 clk_div.v。源码如下:
/**************************************************************************
* Copyright (c) 2008 YADOG
* All rights reserved
* Pls keep this header anywhere,anytime
* Any question,pls feel free to contact
* yadog@163.com
*-----------------------------------------------------------------------------
* Title : module for frequency division project
* Project : demo for using tcl in modelsim
*-----------------------------------------------------------------------------
* File : clk_div.v
* Author : yadog (yadog@163.com)
* Organization: PRIVACY
* Created : 2009/03/14
* Last update : 2009/03/14
* Platform : STRATIX II GX
* Simulators : Modelsim se 6.4/WindowsXP
* Synthesizers: QII 8.1/WindowsXP
* Language : Verilog-2001/2005
* Target :
* Dependency :

Copyright (c) 2009 yadog
*-----------------------------------------------------------------------------
* Description: This is a module for frequency division project.
* It has a single module:
* ----clk_div.v
* use a counter to divide frequency
*-----------------------------------------------------------------------------
*pin assign : PIN_N2 --clk_Sys;
* PIN_C2 --reset
*-----------------------------------------------------------------------------
* Revision History:
*-------------------
* Revision Number : 1
* Version : 1.0
* Date : 2009/03/14
* Modifier : yadog@163.com
* Desccription : Created
* Known bugs :
* To Optimze :
*-----------------------------------------------------------------------------
***************************************************************************
***/
module clk_div (
input clk_in, //frequency to be divided
input reset_n, //asynchronous,negedge active
output reg clk_out //output
);
reg [9:0] j;

Copyright (c) 2009 yadog
//------------------------Frequency Didiver-----------------------------
//use a 10-bit up counter
always @(posedge clk_in,negedge reset_n)
if(!reset_n) //negedge trig,asynchronous reset
begin
clk_out <= 1'b0;
j <= 10'b0;
end
else
begin
if(j==10'd23) //here use 24(Note--divider is 48),you
can change to any 10-bit number
begin
j <= 10'd0;
clk_out <= ~clk_out;
end
else
begin
j <= j + 1'b1; //up counter
end
end
endmodule
2. modelsim 仿真文件 clk_div_tb.v。
输入以下代码,保存文件为 clk_div_tb.v。源码如下:
/**************************************************************************
****
* Copyright (c) 2008 YADOG
剩余10页未读,继续阅读















安全验证
文档复制为VIP权益,开通VIP直接复制

评论2