OpenCores
URL https://opencores.org/ocsvn/oms8051mini/oms8051mini/trunk

Subversion Repositories oms8051mini

[/] [oms8051mini/] [trunk/] [rtl/] [8051/] [oc8051_multiply.v] - Diff between revs 2 and 25

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 2 Rev 25
Line 15... Line 15...
//// - Simon Teran, simont@opencores.org                          ////
//// - Simon Teran, simont@opencores.org                          ////
//// - Marko Mlinar, markom@opencores.org                         ////
//// - Marko Mlinar, markom@opencores.org                         ////
//// - Dinesh Annayya, dinesha@opencores.org                      ////
//// - Dinesh Annayya, dinesha@opencores.org                      ////
////                                                              ////
////                                                              ////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
 
////   v0.0 - Dinesh A, 5th Jan 2017
 
////        1. Active edge of reset changed from High to Low
 
//////////////////////////////////////////////////////////////////////
////                                                              ////
////                                                              ////
//// Copyright (C) 2001 Authors and OPENCORES.ORG                 ////
//// Copyright (C) 2001 Authors and OPENCORES.ORG                 ////
////                                                              ////
////                                                              ////
//// This source file may be used and distributed without         ////
//// This source file may be used and distributed without         ////
//// restriction provided that this copyright statement is not    ////
//// restriction provided that this copyright statement is not    ////
Line 58... Line 61...
// changed to four cycle multiplication, to save resources and
// changed to four cycle multiplication, to save resources and
// increase speed
// increase speed
 
 
 
 
 
 
module oc8051_multiply (clk, rst, enable, src1, src2, des1, des2, desOv);
module oc8051_multiply (clk, resetn, enable, src1, src2, des1, des2, desOv);
//
//
// this module is part of alu
// this module is part of alu
// clk          (in)
// clk          (in)
// rst          (in)
// resetn          (in)
// enable       (in)
// enable       (in)
// src1         (in)  first operand
// src1         (in)  first operand
// src2         (in)  second operand
// src2         (in)  second operand
// des1         (out) first result
// des1         (out) first result
// des2         (out) second result
// des2         (out) second result
// desOv        (out) Overflow output
// desOv        (out) Overflow output
//
//
 
 
input clk, rst, enable;
input clk, resetn, enable;
input [7:0] src1, src2;
input [7:0] src1, src2;
output desOv;
output desOv;
output [7:0] des1, des2;
output [7:0] des1, des2;
 
 
// wires
// wires
Line 94... Line 97...
assign mul_result = mul_result1 + shifted;
assign mul_result = mul_result1 + shifted;
assign des1 = mul_result[15:8];
assign des1 = mul_result[15:8];
assign des2 = mul_result[7:0];
assign des2 = mul_result[7:0];
assign desOv = | des1;
assign desOv = | des1;
 
 
always @(posedge clk or posedge rst)
always @(posedge clk or negedge resetn)
begin
begin
  if (rst) begin
  if (resetn == 1'b0) begin
    cycle <= #1 2'b0;
    cycle <= #1 2'b0;
    tmp_mul <= #1 16'b0;
    tmp_mul <= #1 16'b0;
  end else begin
  end else begin
    if (enable) cycle <= #1 cycle + 2'b1;
    if (enable) cycle <= #1 cycle + 2'b1;
    tmp_mul <= #1 mul_result;
    tmp_mul <= #1 mul_result;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.