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

此程序在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 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值