Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.naic.edu/~phil/hardware/pdev/fpga/gx/plinth/src/adcpad_mult.v
Дата изменения: Thu Jun 26 04:26:02 2008
Дата индексирования: Sat Sep 6 20:13:16 2008
Кодировка:

Поисковые слова: http astrokuban.info astrokuban

// Jeff Mock
// 2030 Gough St.
// San Francisco, CA 94109
// jeff@mock.com
//
// Copyright 2005,2006
//
// $URL: https://www.mock.com/svn/pdev/trunk/gx/plinth/src/adcpad_mult.v $
// $Id: adcpad_mult.v 878 2007-02-05 18:08:53Z jeff $

// Signed 1.11 x unsigned 1.15 = signed 1.11
//

module adcpad_mult (
ck,
a,
b,
ovl_i,

y,
ovl
);

input ck;
input [`N_ADC-1:0] a;
input [15:0] b;
input ovl_i;

output [`N_ADC-1:0] y;
output ovl;

wire [`N_ADC:0] yp;
wire [35:0] prod;

MULT18X18S m (
.P ( prod ),
.A ( { a, 6'b0 } ),
.B ( { 1'b0, b, 1'b0 } ),
.C ( ck ),
.CE ( 1'b1 ),
.R ( 1'b0 )
);
assign yp = prod[33:33-`N_ADC];

reg [`N_ADC:0] yreg;
reg ovl;
reg ovl_id;
always @(posedge ck) begin
yreg <= yp + 13'd1;
ovl_id <= ovl_i;
ovl <= ovl_id | (prod[35] ^ prod[34]);
end
assign y = yreg[`N_ADC:1];
endmodule