discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] sign_extend.v !!!!


From: bobb
Subject: Re: [Discuss-gnuradio] sign_extend.v !!!!
Date: Mon, 14 Mar 2011 03:14:50 +0000

>-----Original Message-----
>From: Josh Blum [mailto:address@hidden
>Sent: Sunday, March 13, 2011 10:52 PM
>To: address@hidden
>Subject: Re: [Discuss-gnuradio] sign_extend.v !!!!
>
>http://en.wikipedia.org/wiki/Sign_extension

 <website that explains what it means to sign extend - this is what this module 
does - more detailed explanation as to how it does it appears below>

>On 03/13/2011 07:47 PM, Alaa Salaheldin wrote:
>> Can anyone please help me to understand what's going on in sign_extend.v ,
>> this macro is initiated in the cic_decim.v
>> 
>> sign_extend #(bw,bw+maxbitgain)
>>       ext_input (.in(signal_in),.out(signal_in_ext));
>> 

instantiates the sign_extend module. Positional parameter settings "#(bw, bw + 
maxbitgain)" will be assigned to bits_in and bits_out, respectively.

>> 
>> when i opened the macro i couldn't understand it's function
>> 
>> // Sign extension "macro"
>> // bits_out should be greater than bits_in
>> 
>> module sign_extend (in,out);

module with 2 ports: in & out

>> parameter bits_in=0;  // FIXME Quartus insists on a default
>> parameter bits_out=0;
>>  input [bits_in-1:0] in;

size of input port "in" is determined by "bits_in"

>> output [bits_out-1:0] out;

size of output port "out" is determined by "bits_out"

>>  assign out = {{(bits_out-bits_in){in[bits_in-1]}},in};

this expression assigns a value to out using both concatenation & replication

  {(bits_out-bits_in){in[bits_in-1]}} replicates in's MSB (bits_out - bits_in) 
times. This value is then prepended (via concatenation) to in.

  Voila! Sign extension implemented in verilog and explained in the webpage 
Josh pointed to above.

>> endmodule
>> 
>> Thanks in advance.

  Hope this helps,

  --Bob






reply via email to

[Prev in Thread] Current Thread [Next in Thread]