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

Subversion Repositories dmt_tx

[/] [dmt_tx/] [trunk/] [myhdl/] [rtl/] [cmath.py] - Diff between revs 31 and 32

Show entire file | Details | Blame | View Log

Rev 31 Rev 32
Line 97... Line 97...
  This turns out to be:
  This turns out to be:
 
 
  y_re = a_re * b_re - a_im * b_im
  y_re = a_re * b_re - a_im * b_im
  y_im = a_re * b_im + a_im * b_re
  y_im = a_re * b_im + a_im * b_re
 
 
 
  The output is expected to have at least the same width as the input.
 
  The products are scaled back to the input width and in case an extra
 
  bit would be needed due to the addition or subtraction, an overflow
 
  is signaled.
 
 
 
  At the moment the overflowing output is saturated to the respective
 
  limit, based on the input width. So a wider output width is not used
 
  with the current implementation.
 
 
  I/O pins:
  I/O pins:
  =========
  =========
  a         : input a
  a         : input a
  b         : input b
  b         : input b
Line 115... Line 123...
    # use input width of a_re, assume a_im, b_re and b_im are the same
    # use input width of a_re, assume a_im, b_re and b_im are the same
    width = len(a_re)
    width = len(a_re)
 
 
    # calculate min and max value range
    # calculate min and max value range
    smin = -2**(width-1)
    smin = -2**(width-1)
    smax = 2**(width-1)-1
    smax = 2**(width-1)
 
 
    #print 'cmult input width: ', width
    #print 'cmult input width: ', width
 
 
    prod_a = a_re * b_re
    prod_a = a_re * b_re
    prod_b = a_im * b_im
    prod_b = a_im * b_im

powered by: WebSVN 2.1.0

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