Chinaunix首页 | 论坛 | 博客
  • 博客访问: 496915
  • 博文数量: 161
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1947
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-25 01:20
文章分类

全部博文(161)

文章存档

2011年(44)

2010年(47)

2009年(48)

2008年(22)

我的朋友

分类:

2008-05-10 17:51:05

基于命令
vlib work           //建库//新建工作目录
vmap work work      //映射//该命令的作用是将目前的逻辑工作库work和实际工作库work映射对应
vlog div.v  tdiv.v  //编译//编译这些文件,要注意的是文件可以单独分开编译,但是一定要先编译被调用的                      文件。假如是VHDL文件就可以用vcom file1,file2命令来编译
vsim testdiv        //仿真//仿真命令,注意后面的参数必须为tdiv.v中的模块名。
add wave/testdiv/ * // 该命令的作用是将testbench文件tdiv.v中模块testdiv下所有的信号变量加到                     波形文件中去。这时候你也可以看到wave文件被打开。
run 2000            //该命令的作用是运行2000个单位时间的仿真。也可以用run –all命令来一直仿                      真下去。
view dataflow       // 用navigate  view all nets观察dataflow,不想观察就可以不
                        // 加这条指令
 每次用命令do  div.do 就可以自动执行想要的仿真动作。
 
div.v  描述文件


module div(clk_i,clk_o,reset);
parameter DIV_N = 4;
input clk_i;
input reset;
output clk_o;
reg clk_o;
integer count;

always @ (negedge reset or posedge clk_i)
begin
    if(!reset)
        count <= 0;
    else
        if(count == 3)
            count <= 0;
        else
            count <= count + 1;
end

always @ (negedge reset or posedge clk_i)
begin
    if(!reset)
        clk_o <= 0;
    else
    begin
        if(count <= (DIV_N/2 - 1))
            clk_o <= 0;
        else
            clk_o <= 1;
    end
                    
end

 

tdiv.v

testbench文件


module testdiv;
reg clk_i;
reg reset;
wire clk_o;

always #50 clk_i = ~clk_i;

initial
begin
    #0 reset = 0;clk_i = 0;
    #100 reset = 1;
    #2000 $stop;
    end

div div1(.clk_i(clk_i),.clk_o(clk_o),.reset(reset));
endmodule

 

 

阅读(1059) | 评论(0) | 转发(0) |
0

上一篇:mMAX+PLUS II 入门

下一篇:电路作业

给主人留下些什么吧!~~