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

  • Post author:
  • Post category:其他




此程序在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中,也可以直接访问上一级调用模块中的任何寄存器



task hold_10_clk;




input  [3:0]s;




if(counter < 10)




counter <= counter + 1;




else




begin




counter <= 0;




state <= s;




end




endtask




//—————————————————————————–





endmodule