加法器源程序.v
上传用户:easylife05
上传日期:2013-03-21
资源大小:42k
文件大小:1k
源码类别:

VHDL/FPGA/Verilog

开发平台:

C/C++

  1. // download from: www.pld.com.cn & www.fpga.com.cn 
  2. module counter (count, clk, reset);
  3. output [7:0] count;
  4. input clk, reset;
  5. reg [7:0] count;
  6. parameter tpd_clk_to_count   =  1;
  7. parameter tpd_reset_to_count =  1;
  8. function [7:0] increment;
  9. input [7:0] val;
  10. reg [3:0] i;
  11. reg carry;
  12.   begin
  13.     increment = val;
  14.     carry = 1'b1;
  15.     /* 
  16.      * Exit this loop when carry == zero, OR all bits processed 
  17.      */ 
  18.     for (i = 4'b0; ((carry == 4'b1) || (i <= 7));  i = i+ 4'b1)
  19.        begin
  20.          increment[i] = val[i] ^ carry;
  21.          carry = val[i] & carry;
  22.        end
  23.   end       
  24. endfunction
  25. always @ (posedge clk or posedge reset)
  26.   if (reset)
  27.      count = #tpd_reset_to_count 8'h00;
  28.   else
  29.      count <= #tpd_clk_to_count increment(count);
  30. /*
  31.  * To make module counter synthesizeable, use the following
  32.  *  alternate form of the always block:
  33.  */
  34. /***********************************************
  35. always @ (posedge clk or posedge reset)
  36.   if (reset)
  37.      count <= 8'h00;
  38.   else
  39.      count <= count + 8'h01;
  40. ***********************************************/
  41. endmodule