Verilog中Task语句可综合设计实例

原创 2015年02月14日 21:47:43
此程序在Xilinx ISE综合工具中实现了综合和布局布线后仿真,功能正确。感兴趣的可以一起讨论研究。

`timescale 1ns / 1ps

module TaskLearn(clk , reset , signal);

input clk , reset;
output reg signal;
reg [3:0]counter;

reg [3:0]state;
parameter idle   = 4'b0000;
parameter state1 = 4'b0001;
parameter state2 = 4'b0010;
parameter state3 = 4'b0100;
parameter state4 = 4'b1000;

always@(posedge clk)
begin
if(reset)
    begin
    state <= idle;
    signal <= 1'bZ;
    end
else
    case(state)
        idle:
            begin
            state <= state1;
            signal <= 1;
            end
        state1:
            begin
            signal <= 0;
            hold_10_clk(state2);
            end
        state2:
            begin
            signal <= 1;
            state <= state3;
            end
        state3:
            begin
            hold_10_clk(state4);
            //state <= state4;综合报告中采用两种方法资源使用几乎一样
            signal <= 0;
            end
        state4:
            begin
            state <= state1;
            signal <= 1;
            end
        default:
          state <= idle;
    endcase
end
//-----------------------------------------------------------------------------
//延时10个周期控制
task hold_10_clk;
    input  [3:0]s;
    if(counter < 10)
        counter <= counter + 1;
    else 
    begin
        counter <= 0;
        state <= s;
    end
endtask
//-----------------------------------------------------------------------------
endmodule 

相关文章推荐

verilog中的task用法

任务就是一段封装在“task-endtask”之间的程序。任务是通过调用来执行的,而且只有 在调用时才执行,如果定义了任务,但是在整个过程中都没有调用它,那么这个任务是不会 执行的。调用某个任务时...

Verilog中任务(task)和函数(function)

如果程序中有一段语句需要执行多次,则重复性的语句非常多,代码会变得冗长且难懂,维护难度也很大。任务和函数具备将重复性语句聚合起来的能力,类似C语言的子程序。通常任务和函数来代替重复性语句,也有效简化程...

Verilog HDL中task与function的区别

任务、函数的定义和调用都包括在一个module的内部,他们一般用于行为级建模,在编写Testbench时用的较多,而在写可综合的代码时要少用。   function的定义:     function ...
  • kobesdu
  • kobesdu
  • 2014年09月05日 14:22
  • 3522

Verilog中task使用

使用Verilog-2001语法,格式更简洁: Verilog 1995:Using the Task Function, Combine Port List, Type Information, a...
  • HengZo
  • HengZo
  • 2015年11月06日 15:22
  • 1449

verilog中的task用法

任务就是一段封装在“task-endtask”之间的程序。任务是通过调用来执行的,而且只有 在调用时才执行,如果定义了任务,但是在整个过程中都没有调用它,那么这个任务是不会 执行的。调用某个任务时...
  • li_qcxy
  • li_qcxy
  • 2013年08月12日 22:42
  • 1801

4位全加器的仿真程序

内容: //4位全加器 module a4(sum,cout,a,b,cin); input [3:0] a,b; input cin; output cout; output [3:0] su...

verilog 变量命名注意事项

verilog,时钟,,变量,大小写

verilog中条件分支语句的综合问题

条件结构 在·

[转]verilog 不可综合语句 总结 汇总

  (1)所有综合工具都支持的结构:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,fun...
  • da895
  • da895
  • 2011年02月12日 21:56
  • 611

verilog 不可综合语句 总结 汇总

(1)所有综合工具都支持的结构:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,functi...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Verilog中Task语句可综合设计实例
举报原因:
原因补充:

(最多只允许输入30个字)