4x4乘法器的Verilog代码

此项目是4x4乘法器的Verilog代码。该项目将使用Verilog HDL实现4x4乘法器。所使用的技术是移位/相加算法,但不同的功能是使用两相自计时系统,以将乘法时间减少一半。此附件文件包括:乘法器的Verilog代码、4x4乘法器的仿真结果。注意:一旦确定了启动信号,乘法器便开始执行乘法。 通过创建2个相位时钟,它将乘法时间减少了一半。结束信号,通知乘法器乘法已经完成并且结果准备就绪。

应用介绍

此项目是4x4乘法器的Verilog代码。该项目将使用Verilog HDL实现4x4乘法器。所使用的技术是移位/相加算法,但不同的功能是使用两相自计时系统,以将乘法时间减少一半。此附件文件包括:乘法器的Verilog代码、4x4乘法器的仿真结果。

注意:一旦确定了启动信号,乘法器便开始执行乘法。 通过创建2个相位时钟,它将乘法时间减少了一半。结束信号,通知乘法器乘法已经完成并且结果准备就绪。

下方展示了乘法器的Verilog代码:

`timescale 1ns / 1ps
// fpga4student.com FPGA projects, Verilog projects, VHDL projects
// multiplier 4x4 using Shift/Add Algorithm and 2-phase clocking system
// Verilog project: Verilog code for multiplier
module mult_4x4(
         input reset,start, 
         input[3:0] A,B, 
         output [7:0] O, output Finish
             );
reg [7:0] O;
wire Finish;  
wire Phi0,Phi1;// 2 phase clocking
wire m1,m2,m3,m4;
// state machine
reg[3:0] State;
// Accumulator
reg [8:0] ACC; // Accumulator
// logic to create 2 phase clocking when starting
nand u0(m1,start,m2);
buf #20 u1(m2,m1);
buf #10 u2(Phi0,m1);// First phase clocking
not #2 u5(m4,Phi0);
assign m3=~m1; 
and #2 u4(Phi1,m3,m4);// Second phase clocking
assign Finish = (State==9)? 1'b1:1'b0; // Finish Flag
// FSM
always @(posedge Phi0 or posedge Phi1 or posedge reset)
begin
 if(reset) begin
 State <= 0; 
 ACC <= 0; 
 O <= 0; 
 end
 else if((Phi0==1'b1) || (Phi1==1'b1)) begin // 2 phase clocking
 if(State==0)
 begin
 ACC[8:4] <= 5'b00000; // begin cycle
 ACC[3:0] <= A; // Load A
 State <= 1;
 end
 else if(State==1 || State == 3 || State ==5 || State ==7) 
                // add/shift State
 begin
 if(ACC[0] == 1'b1) begin // add multiplicand
 ACC[8:4] <= {1'b0,ACC[7:4]} + B; 
 State <= State + 1;
 end
 else
 begin
 ACC <= {1'b0,ACC[8:1]};// shift right
 State <= State + 2;
 end
 end
 else if(State==2 || State == 4 || State ==6 || State ==8) 
                // shift State
 begin
 ACC <= {1'b0,ACC[8:1]}; // shift right
 State <= State + 1;
 end 
 else if(State == 9) begin
 State <= 0;
 O <= ACC[7:0]; 
 end
 end
end 
 
endmodule
// TestBench
// fpga4student.com FPGA projects, Verilog projects, VHDL projects
// Verilog project: Verilog code for multiplier

module test();
// signals
reg start,reset;
reg[3:0] A,B;
// Outputs
wire [7:0] O;
wire Finish;
// device under test
mult_4x4 dut(reset,start, A,B,O,Finish);
initial begin
reset=1; // reset
#40 start = 0;A =14; B= 11;
#400 reset = 0; 
#40 start = 1; // start
//@(posedge Finish);
//start = 0;
//$finish;
end 
endmodule

文件列表(部分)

名称 大小 修改日期
4x4乘法器的Verilog代码.txt0.89 KB2020-03-29
m2.png35.73 KB2020-03-29
image0.00 KB2020-03-29

立即下载

相关下载

[算术逻辑单元(ALU)的Verilog代码] 此项目是算术逻辑单元(ALU)的Verilog代码。上一次,在VHDL中设计并实现了算术逻辑单元(ALU)。 提出了用于ALU的完整VHDL代码。现在,apollocode提供了ALU的Verilog代码。 还提供了用于ALU的testbench Verilog代码以进行仿真。附件中包括:ALU的Verilog代码、ALU的Testbench Verilog代码、ALU的仿真波形。了解更多请下载附件。
[16位RISC处理器的Verilog代码] 此项目是16位RISC处理器的Verilog代码。在此Verilog项目中,提供了用于16位RISC处理器的Verilog代码。RISC处理器是基于其指令集和哈佛式数据路径结构而设计的。 然后,RISC处理器在Verilog中实现,并使用Xilinx ISIM进行验证。附件中包括:RISC处理器的指令集、处理器控制单元设计、ALU控制单元设计、RISC处理器的Verilog代码等等;了解更多请下载附件。
[Full Adder的Verilog代码] 此项目是Full Adder的Verilog代码。在此Verilog项目中,提供了Full Adder的Verilog代码。 Full Adder的行为和结构Verilog代码均已实现。附件中包括:使用行为代码的完整加法器的Verilog代码、完整加法器的Verilog代码,使用结构代码。想了解的更多请下载附件。
[比较器的Verilog代码] 此项目是比较器的Verilog代码。在该项目中,在Verilog HDL中设计并实现了一个简单的2位比较器。 给出了真值表,K-Map和比较器的最小化方程。 比较器的Verilog代码由ModelSim仿真,并给出了仿真波形。2位比较器的规格如下:输入:2位A和B用于比较;输出:A_greater_B:如果A> B,则为高,否则为低;A_equal_B:如果A = B,则为高,否则为低;A_less_B:如果A [D触发器的Verilog代码] 此项目是D触发器的Verilog代码。D触发器是数字逻辑电路中的基本组件。 此项目中提供了D触发器的Verilog代码。 实现了两种类型的D型触发器,即上升沿D型触发器和下降沿D型触发器。附件文件中包括:上升沿D型触发器的Verilog代码、带有同步复位的上升沿D触发器的Verilog代码、具有异步复位高电平的上升沿D触发器的Verilog代码、具有异步复位低电平的上升沿D触发器的Verilog代码等等。了解更多请下载附件。
[4x4乘法器的Verilog代码] 此项目是4x4乘法器的Verilog代码。该项目将使用Verilog HDL实现4x4乘法器。所使用的技术是移位/相加算法,但不同的功能是使用两相自计时系统,以将乘法时间减少一半。此附件文件包括:乘法器的Verilog代码、4x4乘法器的仿真结果。注意:一旦确定了启动信号,乘法器便开始执行乘法。 通过创建2个相位时钟,它将乘法时间减少了一半。结束信号,通知乘法器乘法已经完成并且结果准备就绪。

评论列表 共有 0 条评论

暂无评论

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部