⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cla.v

📁 design compile synthesis user guide
💻 V
字号:
module cla_16(a, b, c_in, sum, c_out, gen_out, prop_out);input [15:0] a, b;     // numbers to addinput c_in;            // carry inoutput [15:0] sum;     // sumoutput c_out;          // carry of 16-bit additionoutput gen_out;        // generate of 16-bit additionoutput prop_out;      // propagate of 16-bit additionwire [3:0] part_carry; // calculated carry_out of                       //each 4-bit partwire [3:0] part_gen;   // generate of each 4-bit partwire [3:0] part_prop;  // propagate of each 4-bit part// Make instances to calculate generates and propagates.// First 4 instances calculate generate and propagate// for each 4-bit part.  Last instance calculates// generate and propagate for all 16 bits.gen_prop gp0( (a[3:0] & b[3:0]), (a[3:0] | b[3:0]),              part_gen[0], part_prop[0]);gen_prop gp1( (a[7:4] & b[7:4]), (a[7:4] | b[7:4]),              part_gen[1], part_prop[1]);gen_prop gp2( (a[11:8] & b[11:8]), (a[11:8] | b[11:8]),              part_gen[2], part_prop[2]);gen_prop gp3( (a[15:12] & b[15:12]), (a[15:12] | b[15:12]),              part_gen[3], part_prop[3]);gen_prop gp(part_gen, part_prop, gen_out, prop_out);// Make instances to calculate carries for each 4-bit partcarry c( part_gen, part_prop, c_in, part_carry );assign c_out = part_carry[3];// make 4-bit adders to do additionsassign sum[3:0] = a[3:0] + b[3:0] + c_in;assign sum[7:4] = a[7:4] + b[7:4] + part_carry[0];assign sum[11:8] = a[11:8] + b[11:8] + part_carry[1];assign sum[15:12] = a[15:12] + b[15:12] + part_carry[2];endmodulemodule carry(gens_in, props_in, c_in, carries);input [3:0] gens_in;  // generate for each of 4 partsinput [3:0] props_in; // propagate for each of 4 partsinput c_in;           // carry in output [3:0] carries;  // carry out for each of 4 parts  function [3:0] get_carries;input [3:0] gens_in, props_in;input c_in;reg [3:0] carries;integer i; begin   for (i = 0; i <= 3; i = i + 1)      if (i == 0)         carries[i] = gens_in[i] | props_in[i] & c_in;      else         carries[i] = gens_in[i] | props_in[i] &                                             carries[i-1];   get_carries = carries;endendfunction assign carries = get_carries(gens_in, props_in, c_in);endmodulemodule gen_prop(gens_in, props_in, gen_out, prop_out); input [3:0] gens_in;  // generate for each of 4 partsinput [3:0] props_in; // propagate for each of 4 partsoutput gen_out, prop_out; function [1:0] get_gen_and_prop;input [3:0] gens_in, props_in;reg prop, gen;integer i; begin   for (i = 0; i <= 3; i = i + 1) begin      if (i == 0) begin         gen = gens_in[i];         prop = props_in[i];      end else begin         gen = gens_in[i] | props_in[i] & gen;         prop = props_in[i] & prop;      end   end get_gen_and_prop = {gen, prop};endendfunctionassign {gen_out, prop_out} = get_gen_and_prop(gens_in, props_in);endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -