Site Home   Archive Home   FAQ Home   How to search the Archive   How to Navigate the Archive   
Compare FPGA features and resources   

Threads starting:
1994JulAugSepOctNovDec1994
1995JanFebMarAprMayJunJulAugSepOctNovDec1995
1996JanFebMarAprMayJunJulAugSepOctNovDec1996
1997JanFebMarAprMayJunJulAugSepOctNovDec1997
1998JanFebMarAprMayJunJulAugSepOctNovDec1998
1999JanFebMarAprMayJunJulAugSepOctNovDec1999
2000JanFebMarAprMayJunJulAugSepOctNovDec2000
2001JanFebMarAprMayJunJulAugSepOctNovDec2001
2002JanFebMarAprMayJunJulAugSepOctNovDec2002
2003JanFebMarAprMayJunJulAugSepOctNovDec2003
2004JanFebMarAprMayJunJulAugSepOctNovDec2004
2005JanFebMarAprMayJunJulAugSepOctNovDec2005
2006JanFebMarAprMayJunJulAugSepOctNovDec2006
2007JanFebMarAprMayJunJulAugSepOctNovDec2007
2008JanFebMarAprMayJunJulAugSepOctNovDec2008
2009JanFebMarAprMayJunJulAugSepOctNovDec2009
2010JanFebMarAprMayJunJulAugSepOctNovDec2010
2011JanFebMarAprMayJunJulAugSepOctNovDec2011
2012JanFebMarAprMayJunJulAugSepOctNovDec2012
2013JanFebMarAprMayJunJulAugSepOctNovDec2013
2014JanFebMarAprMayJunJulAugSepOctNovDec2014
2015JanFebMarAprMayJunJulAugSepOctNovDec2015
2016JanFebMarAprMayJunJulAugSepOctNovDec2016
2017JanFebMarAprMayJunJulAugSepOctNovDec2017
2018JanFebMarAprMayJunJulAugSepOctNovDec2018
2019JanFebMarAprMayJunJulAugSepOctNovDec2019
2020JanFebMarAprMay2020

Authors:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Custom Search

Messages from 127575

Article: 127575
Subject: Xilinx, How to generate PAD file, from the UCF file
From: Goli <togoli@gmail.com>
Date: Thu, 3 Jan 2008 01:22:44 -0800 (PST)
Links: << >>  << T >>  << A >>
Hi,

I am working on a Xilinx Virtex5 design. I generated a pin lock file
(ucf) and have a top level verilog file. Top level verilog file does
not have any code, but it has only IO declarations.And I want to
generate the pad file out of this.

The issue is that since it is an empty design, I get the following
error message,
"
NCD was not produced. All logic was removed from design.  This
   is usually due to having no input or output PAD connections in the
design and
   no nets or symbols marked as 'SAVE'.  You can either add PADs or
'SAVE'
   attributes to the design, or run 'map -u' to disable logic trimming
in the
   mapper.
"

I tried -u options in MAP, and I have also enable add IO buffer
options in XST, but it still gives the same error.

I know I can write some dummy logic and generate the pad file, but was
wondering if there is any easier method of doing this?

Does anyone know how can I give this SAVE attribute as mentioned in
the error above? Or is there any way to generate the pad file.

Regards,
Goli

Article: 127576
Subject: round,fix and floor algortihms
From: FPGA23@gmail.com
Date: Thu, 3 Jan 2008 02:00:37 -0800 (PST)
Links: << >>  << T >>  << A >>
I would like to know which round,fix and floor algorithm would be best
to be implemented on an FPGA. I am working on a DSP project. I want to
write funtions in VHDL which can be called and would return the round,
fix and floor value of integers.

Does VHDL have pre defined functions which could do this like in C,C+
+. If not, which would be the best way to do this.

Please help


Article: 127577
Subject: Re: Where are the LCD or OLED bitmapped displays?
From: Frank Buss <fb@frank-buss.de>
Date: Thu, 3 Jan 2008 11:29:43 +0100
Links: << >>  << T >>  << A >>
Brian Davis wrote:

> [1] close in DDS phase noise artifacts:
>  http://groups.google.com/group/comp.arch.fpga/msg/0b1a2f345aa1c350

Thanks for this link, this was an interesting discussion. I really like the
idea using a DAC for creating a sine output and a comparator for creating a
square wave, because then you are using more bits of the accumulator and
you can avoid wandering, if you want to generate 1.000....0001 * fclock.

I think this could be implemented with low bit counts for the DAC, if you
feed it to a good analog band pass filter and if you use very good
comparators for low jitter. And it should be possible to use a fixed filter
and then feed it back into a PLL for producing a wide range of output
frequencies.

For very high precision you could use a VCXO to synchronize the reference
clock to GPS or easier to use time bases, like DCF77 in Germany or one of
the other many time and frequency stations in other countries:
http://www.ac6v.com/standard.htm

-- 
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de

Article: 127578
Subject: Re: Split Plane
From: "Symon" <symon_brewer@hotmail.com>
Date: Thu, 3 Jan 2008 10:30:49 -0000
Links: << >>  << T >>  << A >>
"John Larkin" <jjlarkin@highNOTlandTHIStechnologyPART.com> wrote in message 
news:8ikon35hsoitj6gkbq9k3fu8oevju1f7dm@4ax.com...
> On Wed, 2 Jan 2008 18:41:13 -0000, "Symon" <symon_brewer@hotmail.com>
>>
>> http://www.emcesd.com/tt2002/tt120102.htm
>>
>
>
> For Pete's sake, he used WIRES. He couldn't even afford an x-acto
> knife.
>
Hi John,
Thanks for your response. I guess you don't think his experiment is 
equivalent to your suggestion? Perhaps you would describe exactly what 
experiment you envisage?

N.B. I understand we're getting away from the OP's system with two planes 
here. That said...

In Mr. Smith's experiment, the wire crosses a slit in the power plane. I 
guess he cut the slit with a knife, which I bet he can afford, considering 
they are cheaper than a Agilent 54845a 'scope! This is a way to get the 
signal close to a copper-clad plane to simulate the effect of a trace on an 
adjacent PCB layer to a plane. If the trace is on the opposite face of the 
copper clad to the plane, the loop area between signal and plane is 
considerably larger even without the slit, so the slit won't be as big a 
problem, for a given characteristic impedance of the signal.

>>
>>There are further experiments here:-
>> http://www.emcesd.com/tt2003/tt010103.htm

John, I think you might have missed this link, but this experiment shows 
where the current flows. It shows the return current in black and white. (Or 
maybe yellow!) I'd be especially interested in your comments about this 
experiment. It shows the signal does not capacitively couple across the slit 
to any great degree.

>>
>> http://www.emcesd.com/tt2003/tt020103.htm
>>
>
> Not too surprising, 20 cm away from what appears to be a kilovolt
> spark gap. It's difficult to make any sort of quantitative
> extrapolation from this to real circuits.
>
> John
>
This demonstrates susceptibility to electrostatic discharge (ESD). As I'm 
sure you know, these discharges can easily exceed 1kV. It's important to 
understand that signals that cross breaks in ground planes are particularly 
susceptible to ESD.

Thanks, Symon. 



Article: 127579
Subject: Re: round,fix and floor algortihms
From: "KJ" <kkjennings@sbcglobal.net>
Date: Thu, 03 Jan 2008 12:13:55 GMT
Links: << >>  << T >>  << A >>

<FPGA23@gmail.com> wrote in message 
news:360692c0-6368-485b-bb36-42c9d33a8204@h11g2000prf.googlegroups.com...
>I would like to know which round,fix and floor algorithm would be best
> to be implemented on an FPGA. I am working on a DSP project. I want to
> write funtions in VHDL which can be called and would return the round,
> fix and floor value of integers.
>
> Does VHDL have pre defined functions which could do this like in C,C+
> +. If not, which would be the best way to do this.
>
> Please help
>

In the ieee.math_real lib you'll find all three:  ceil, floor and round

KJ 



Article: 127580
Subject: Re: Split Plane
From: "Symon" <symon_brewer@hotmail.com>
Date: Thu, 3 Jan 2008 12:41:25 -0000
Links: << >>  << T >>  << A >>
"Symon" <symon_brewer@hotmail.com> wrote in message 
news:flidms$1j2$1@aioe.org...
>>>
>>>There are further experiments here:-
>>> http://www.emcesd.com/tt2003/tt010103.htm
>
> John, I think you might have missed this link, but this experiment shows 
> where the current flows. It shows the return current in black and white. 
> (Or maybe yellow!) I'd be especially interested in your comments about 
> this experiment. It shows the signal does not capacitively couple across 
> the slit to any great degree.
>
Hmm, thinking harder about it, it doesn't necessarily show the lack of 
current across the gap. But it does show that not all of it couples across. 
Further experimentation and/or calculation would be necessary to show where 
the majority of current goes, but the fact that at least some of it follows 
the path around the slit shows the problem with increased inductance and 
EMI.
Cheers, Syms. 



Article: 127581
Subject: Re: round,fix and floor algortihms
From: "Symon" <symon_brewer@hotmail.com>
Date: Thu, 3 Jan 2008 13:16:03 -0000
Links: << >>  << T >>  << A >>
<FPGA23@gmail.com> wrote in message 
news:360692c0-6368-485b-bb36-42c9d33a8204@h11g2000prf.googlegroups.com...
>I would like to know which round,fix and floor algorithm would be best
> to be implemented on an FPGA. I am working on a DSP project. I want to
> write funtions in VHDL which can be called and would return the round,
> fix and floor value of integers.
>
I'm missing something. How do you 'round' or 'floor' an integer? They 
already are, aren't they?
Cheers, Syms. 



Article: 127582
Subject: Re: Where are the LCD or OLED bitmapped displays?
From: Brian Davis <brimdavis@aol.com>
Date: Thu, 3 Jan 2008 05:28:01 -0800 (PST)
Links: << >>  << T >>  << A >>
Frank Buss wrote:
>
> Thanks for this link, this was an interesting discussion. I really like the
> idea using a DAC for creating a sine output and a comparator for creating a
> square wave, because then you are using more bits of the accumulator and
> you can avoid wandering, if you want to generate 1.000....0001 * fclock.
>

 Using a DAC with hard limiting will reduce their level vs. a single
bit
DDS, but the bothersome truncation/quantization artifacts are still
there
in a conventional DDS.

 Veering back onto discussing single bit DDS's, given a high rate
serializer to press into use, there are a variety of fractional-N
or noise shaping techniques that should work well, e.g. [4],[5]

Brian

[4] HP single-bit fractional-N:
  "A Multiple Modulator Fractional Divider", Miller/Conley, 1990
  http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=177545
  (also reprinted in Kroupa's DDFS book)

  http://www.google.com/patents?id=6PMaAAAAEBAJ&dq=5038117

[5] bandpass delta-sigma modulator:
  http://lib.tkk.fi/Diss/2007/isbn9789512288090/article6.pdf


Article: 127583
Subject: WebPack on GNU/Linux
From: Habib Bouaziz-Viallet <habib@rigel.systems>
Date: 03 Jan 2008 13:51:27 GMT
Links: << >>  << T >>  << A >>
Hi all !

I simulate a simple design (synchronus RESET/LOAD 8-bits counter) with
iverilog and testbench associated. Waveforms with gtkwave looks good.

I have been trying to synthetise a simple 8bit counter within WebPack ISE
9.2 edition.

The "Translate" phase failed :
....
Writing NGD file "counter.ngd" ...
Writing NGDBUILD log file "counter.bld"...
NGDBUILD done.
Process "Translate" failed

...

What's wrong with this ? 


PS : 
 /* ------------ SIMPLE 8 BITS Synchronous Counter -------------*/
`timescale 1ns / 1ps
module counter(in, out, clk, reset, load);
   input [7:0] in;
   input clk;
   input reset;
   input load;
   output reg[7:0] out;
   
   /* Chargement synchrone par load */
   always @(posedge clk)
     begin
	out<=out+1;
	if (reset==1) 
	  out[7:0] <= 0;
	else if(load==1)
	  out[7:0] <= in[7:0];
     end
   
endmodule

Here the test_bench associated


module test();
   
   reg [7:0] bin ;
   wire [7:0] bout ;
   reg clk, reset, load;   //   wire s, cout;

   counter counter_en_test(bin, bout, clk, reset, load);

   initial
   begin

      bin = 4'b00010111;
      clk = 0;
      load = 0;
      reset = 0;
      
      #5;
      clk = 1;
      load = 1;
      
      
      #5;
      clk = 0;
      load=0;
      
      #5;
      clk = 1;
      
      #5;
      clk = 0;
      
      #5;
      clk = 1;
      
      #5;
      clk = 0;
      load = 1;
      
      #5;
      clk = 1;
      
      #5;
      clk = 0;

      #5;
      clk = 1;
      
      
   end // initial begin
   
   initial 
     begin
  	$dumpfile ("counter.vcd");
  	$dumpvars;
     end

   initial
     begin
  	$display("\t\ttime,\tclk,\tin,\tout,\treset,\tload");
  	$monitor("%d \t%d \t%d \t%b \t%b \t%b",$time, bin, bout, clk, reset, load);
     end
   
endmodule // test



-- 
HBV

Article: 127584
Subject: Re: WebPack on GNU/Linux
From: Arlet Ottens <usenet+5@c-scape.nl>
Date: Thu, 03 Jan 2008 15:02:31 +0100
Links: << >>  << T >>  << A >>
Habib Bouaziz-Viallet wrote:
> Hi all !
> 
> I simulate a simple design (synchronus RESET/LOAD 8-bits counter) with
> iverilog and testbench associated. Waveforms with gtkwave looks good.
> 
> I have been trying to synthetise a simple 8bit counter within WebPack ISE
> 9.2 edition.
> 
> The "Translate" phase failed :
> ....
> Writing NGD file "counter.ngd" ...
> Writing NGDBUILD log file "counter.bld"...
> NGDBUILD done.
> Process "Translate" failed
> 
> ...
> 
> What's wrong with this ? 

Did it give you any specific errors ? (click on 'Errors' tab at the bottom).


> 
> 
> PS : 
>  /* ------------ SIMPLE 8 BITS Synchronous Counter -------------*/
> `timescale 1ns / 1ps
> module counter(in, out, clk, reset, load);
>    input [7:0] in;
>    input clk;
>    input reset;
>    input load;
>    output reg[7:0] out;
>    
>    /* Chargement synchrone par load */
>    always @(posedge clk)
>      begin
> 	out<=out+1;
> 	if (reset==1) 
> 	  out[7:0] <= 0;
> 	else if(load==1)
> 	  out[7:0] <= in[7:0];
>      end

You're doing two assignments to 'out' in the same clock cycle.

Try:

     always @(posedge clk)
       begin
  	if (reset==1)
  	  out[7:0] <= 0;
  	else if(load==1)
  	  out[7:0] <= in[7:0];
         else
           out<=out+1;
       end 	


>    
> endmodule
> 
> Here the test_bench associated
> 
> 
> module test();
>    
>    reg [7:0] bin ;
>    wire [7:0] bout ;
>    reg clk, reset, load;   //   wire s, cout;
> 
>    counter counter_en_test(bin, bout, clk, reset, load);
> 
>    initial
>    begin
> 
>       bin = 4'b00010111;
>       clk = 0;
>       load = 0;
>       reset = 0;
>       
>       #5;
>       clk = 1;
>       load = 1;
>       
>       
>       #5;
>       clk = 0;
>       load=0;
>       
>       #5;
>       clk = 1;
>       
>       #5;
>       clk = 0;
>       
>       #5;
>       clk = 1;
>       
>       #5;
>       clk = 0;
>       load = 1;
>       
>       #5;
>       clk = 1;
>       
>       #5;
>       clk = 0;
> 
>       #5;
>       clk = 1;
>       
>       
>    end // initial begin
>    
>    initial 
>      begin
>   	$dumpfile ("counter.vcd");
>   	$dumpvars;
>      end
> 
>    initial
>      begin
>   	$display("\t\ttime,\tclk,\tin,\tout,\treset,\tload");
>   	$monitor("%d \t%d \t%d \t%b \t%b \t%b",$time, bin, bout, clk, reset, load);
>      end
>    
> endmodule // test
> 
> 
> 

Article: 127585
Subject: Re: WebPack on GNU/Linux
From: Habib Bouaziz-Viallet <habib@rigel.systems>
Date: 03 Jan 2008 14:16:20 GMT
Links: << >>  << T >>  << A >>
Le Thu, 03 Jan 2008 15:02:31 +0100, Arlet Ottens a écrit:

> Habib Bouaziz-Viallet wrote:
>> Hi all !
>> 
>> I simulate a simple design (synchronus RESET/LOAD 8-bits counter) with
>> iverilog and testbench associated. Waveforms with gtkwave looks good.
>> 
>> I have been trying to synthetise a simple 8bit counter within WebPack ISE
>> 9.2 edition.
>> 
>> The "Translate" phase failed :
>> ....
>> Writing NGD file "counter.ngd" ...
>> Writing NGDBUILD log file "counter.bld"...
>> NGDBUILD done.
>> Process "Translate" failed
>> 
>> ...
>> 
>> What's wrong with this ? 
> 
> Did it give you any specific errors ? (click on 'Errors' tab at the bottom).
> 
No. But i have WARNING:Xst:2734 - Property "use_dsp48" is not applicable
for this technology. (In Warnings TAB)
> 
> 
>> 
>> PS :
>>  /* ------------ SIMPLE 8 BITS Synchronous Counter -------------*/
>> `timescale 1ns / 1ps
>> module counter(in, out, clk, reset, load);
>>    input [7:0] in;
>>    input clk;
>>    input reset;
>>    input load;
>>    output reg[7:0] out;
>>    
>>    /* Chargement synchrone par load */
>>    always @(posedge clk)
>>      begin
>> 	out<=out+1;
>> 	if (reset==1)
>> 	  out[7:0] <= 0;
>> 	else if(load==1)
>> 	  out[7:0] <= in[7:0];
>>      end
> 
> You're doing two assignments to 'out' in the same clock cycle.
That's right but i'm not sur that this is an issue in that case. I'm
learning Verilog at the moment. Thanks.
> 
> Try:
> 
>      always @(posedge clk)
>        begin
>   	if (reset==1)
>   	  out[7:0] <= 0;
>   	else if(load==1)
>   	  out[7:0] <= in[7:0];
>          else
>            out<=out+1;
>        end
> 
> 
> 
>> endmodule
>> 
>> Here the test_bench associated
>> 
>> 
>> module test();
>>    
>>    reg [7:0] bin ;
>>    wire [7:0] bout ;
>>    reg clk, reset, load;   //   wire s, cout;
>> 
>>    counter counter_en_test(bin, bout, clk, reset, load);
>> 
>>    initial
>>    begin
>> 
>>       bin = 4'b00010111;
>>       clk = 0;
>>       load = 0;
>>       reset = 0;
>>       
>>       #5;
>>       clk = 1;
>>       load = 1;
>>       
>>       
>>       #5;
>>       clk = 0;
>>       load=0;
>>       
>>       #5;
>>       clk = 1;
>>       
>>       #5;
>>       clk = 0;
>>       
>>       #5;
>>       clk = 1;
>>       
>>       #5;
>>       clk = 0;
>>       load = 1;
>>       
>>       #5;
>>       clk = 1;
>>       
>>       #5;
>>       clk = 0;
>> 
>>       #5;
>>       clk = 1;
>>       
>>       
>>    end // initial begin
>>    
>>    initial
>>      begin
>>   	$dumpfile ("counter.vcd");
>>   	$dumpvars;
>>      end
>> 
>>    initial
>>      begin
>>   	$display("\t\ttime,\tclk,\tin,\tout,\treset,\tload"); $monitor("%d
>>   	\t%d \t%d \t%b \t%b \t%b",$time, bin, bout, clk, reset, load);
>>      end
>>    
>> endmodule // test
>> 
>> 
>>



-- 
HBV

Article: 127586
Subject: Re: WebPack on GNU/Linux
From: Arlet Ottens <usenet+5@c-scape.nl>
Date: Thu, 03 Jan 2008 15:31:26 +0100
Links: << >>  << T >>  << A >>
Habib Bouaziz-Viallet wrote:

> Le Thu, 03 Jan 2008 15:02:31 +0100, Arlet Ottens a écrit:
> 
>> Habib Bouaziz-Viallet wrote:
>>> Hi all !
>>>
>>> I simulate a simple design (synchronus RESET/LOAD 8-bits counter) with
>>> iverilog and testbench associated. Waveforms with gtkwave looks good.
>>>
>>> I have been trying to synthetise a simple 8bit counter within WebPack ISE
>>> 9.2 edition.
>>>
>>> The "Translate" phase failed :
>>> ....
>>> Writing NGD file "counter.ngd" ...
>>> Writing NGDBUILD log file "counter.bld"...
>>> NGDBUILD done.
>>> Process "Translate" failed
>>>
>>> ...
>>>
>>> What's wrong with this ? 
>> Did it give you any specific errors ? (click on 'Errors' tab at the bottom).
>>
> No. But i have WARNING:Xst:2734 - Property "use_dsp48" is not applicable
> for this technology. (In Warnings TAB)
>>
>>> PS :
>>>  /* ------------ SIMPLE 8 BITS Synchronous Counter -------------*/
>>> `timescale 1ns / 1ps
>>> module counter(in, out, clk, reset, load);
>>>    input [7:0] in;
>>>    input clk;
>>>    input reset;
>>>    input load;
>>>    output reg[7:0] out;
>>>    
>>>    /* Chargement synchrone par load */
>>>    always @(posedge clk)
>>>      begin
>>> 	out<=out+1;
>>> 	if (reset==1)
>>> 	  out[7:0] <= 0;
>>> 	else if(load==1)
>>> 	  out[7:0] <= in[7:0];
>>>      end
>> You're doing two assignments to 'out' in the same clock cycle.
> That's right but i'm not sur that this is an issue in that case. I'm
> learning Verilog at the moment. Thanks.
>> Try:
>>
>>      always @(posedge clk)
>>        begin
>>   	if (reset==1)
>>   	  out[7:0] <= 0;
>>   	else if(load==1)
>>   	  out[7:0] <= in[7:0];
>>          else
>>            out<=out+1;
>>        end
>>

I tried this counter module in ISE Webpack 9.2 in Linux, and it builds 
fine.

The test bench contains constructs that aren't synthesizable, such as 
the delays, $display() calls, and the fact that it doesn't have any I/O 
signals.

>>
>>
>>> endmodule
>>>
>>> Here the test_bench associated
>>>
>>>
>>> module test();
>>>    
>>>    reg [7:0] bin ;
>>>    wire [7:0] bout ;
>>>    reg clk, reset, load;   //   wire s, cout;
>>>
>>>    counter counter_en_test(bin, bout, clk, reset, load);
>>>
>>>    initial
>>>    begin
>>>
>>>       bin = 4'b00010111;
>>>       clk = 0;
>>>       load = 0;
>>>       reset = 0;
>>>       
>>>       #5;
>>>       clk = 1;
>>>       load = 1;
>>>       
>>>       
>>>       #5;
>>>       clk = 0;
>>>       load=0;
>>>       
>>>       #5;
>>>       clk = 1;
>>>       
>>>       #5;
>>>       clk = 0;
>>>       
>>>       #5;
>>>       clk = 1;
>>>       
>>>       #5;
>>>       clk = 0;
>>>       load = 1;
>>>       
>>>       #5;
>>>       clk = 1;
>>>       
>>>       #5;
>>>       clk = 0;
>>>
>>>       #5;
>>>       clk = 1;
>>>       
>>>       
>>>    end // initial begin
>>>    
>>>    initial
>>>      begin
>>>   	$dumpfile ("counter.vcd");
>>>   	$dumpvars;
>>>      end
>>>
>>>    initial
>>>      begin
>>>   	$display("\t\ttime,\tclk,\tin,\tout,\treset,\tload"); $monitor("%d
>>>   	\t%d \t%d \t%b \t%b \t%b",$time, bin, bout, clk, reset, load);
>>>      end
>>>    
>>> endmodule // test
>>>
>>>
>>>
> 
> 
> 

Article: 127587
Subject: Re: Xilinx, How to generate PAD file, from the UCF file
From: Jim Wu <jimwu88NOOOSPAM@yahoo.com>
Date: Thu, 3 Jan 2008 06:37:19 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 3, 4:22 am, Goli <tog...@gmail.com> wrote:
> Hi,
>
> I am working on a Xilinx Virtex5 design. I generated a pin lock file
> (ucf) and have a top level verilog file. Top level verilog file does
> not have any code, but it has only IO declarations.And I want to
> generate the pad file out of this.
>
> The issue is that since it is an empty design, I get the following
> error message,
> "
> NCD was not produced. All logic was removed from design.  This
>    is usually due to having no input or output PAD connections in the
> design and
>    no nets or symbols marked as 'SAVE'.  You can either add PADs or
> 'SAVE'
>    attributes to the design, or run 'map -u' to disable logic trimming
> in the
>    mapper.
> "
>
> I tried -u options in MAP, and I have also enable add IO buffer
> options in XST, but it still gives the same error.
>
> I know I can write some dummy logic and generate the pad file, but was
> wondering if there is any easier method of doing this?
>
> Does anyone know how can I give this SAVE attribute as mentioned in
> the error above? Or is there any way to generate the pad file.
>
> Regards,
> Goli

What info do you want to save to this PAD file? You can give ADEPT
(http://home.comcast.net/%7Ejimwu88/tools/adept/) a try to see if it
may do what you want. If it doesn't, please let me know and I will see
if I can help.

Cheers,
Jim

Article: 127588
Subject: Re: WebPack on GNU/Linux
From: Habib Bouaziz-Viallet <habib@rigel.systems>
Date: 03 Jan 2008 14:37:48 GMT
Links: << >>  << T >>  << A >>
Le Thu, 03 Jan 2008 15:31:26 +0100, Arlet Ottens a écrit:

> Habib Bouaziz-Viallet wrote:
> 
>> Le Thu, 03 Jan 2008 15:02:31 +0100, Arlet Ottens a écrit:
>> 
>>> Habib Bouaziz-Viallet wrote:
>>>> Hi all !
>>>>
>>>> I simulate a simple design (synchronus RESET/LOAD 8-bits counter) with
>>>> iverilog and testbench associated. Waveforms with gtkwave looks good.
>>>>
>>>> I have been trying to synthetise a simple 8bit counter within WebPack ISE
>>>> 9.2 edition.
>>>>
>>>> The "Translate" phase failed :
>>>> ....
>>>> Writing NGD file "counter.ngd" ...
>>>> Writing NGDBUILD log file "counter.bld"...
>>>> NGDBUILD done.
>>>> Process "Translate" failed
>>>>
>>>> ...
>>>>
>>>> What's wrong with this ? 
>>> Did it give you any specific errors ? (click on 'Errors' tab at the bottom).
>>>
>> No. But i have WARNING:Xst:2734 - Property "use_dsp48" is not applicable
>> for this technology. (In Warnings TAB)
>>>
>>>> PS :
>>>>  /* ------------ SIMPLE 8 BITS Synchronous Counter -------------*/
>>>> `timescale 1ns / 1ps
>>>> module counter(in, out, clk, reset, load);
>>>>    input [7:0] in;
>>>>    input clk;
>>>>    input reset;
>>>>    input load;
>>>>    output reg[7:0] out;
>>>>    
>>>>    /* Chargement synchrone par load */
>>>>    always @(posedge clk)
>>>>      begin
>>>> 	out<=out+1;
>>>> 	if (reset==1)
>>>> 	  out[7:0] <= 0;
>>>> 	else if(load==1)
>>>> 	  out[7:0] <= in[7:0];
>>>>      end
>>> You're doing two assignments to 'out' in the same clock cycle.
>> That's right but i'm not sur that this is an issue in that case. I'm
>> learning Verilog at the moment. Thanks.
>>> Try:
>>>
>>>      always @(posedge clk)
>>>        begin
>>>   	if (reset==1)
>>>   	  out[7:0] <= 0;
>>>   	else if(load==1)
>>>   	  out[7:0] <= in[7:0];
>>>          else
>>>            out<=out+1;
>>>        end
>>>
> 
> I tried this counter module in ISE Webpack 9.2 in Linux, and it builds 
> fine.
waouh ! Is it a GNU/Linux ditrib pb ? I'm running debian GNU/Linux.
> 
> The test bench contains constructs that aren't synthesizable, such as 
> the delays, $display() calls, and the fact that it doesn't have any I/O 
> signals.
That's right. the test bench is here only for getting readeable results
with iverilog(or cver) and gtkwave
> 
> 
> 
>>>> endmodule
>>>>
>>>> Here the test_bench associated
>>>>
>>>>
>>>> module test();
>>>>    
>>>>    reg [7:0] bin ;
>>>>    wire [7:0] bout ;
>>>>    reg clk, reset, load;   //   wire s, cout;
>>>>
>>>>    counter counter_en_test(bin, bout, clk, reset, load);
>>>>
>>>>    initial
>>>>    begin
>>>>
>>>>       bin = 4'b00010111;
>>>>       clk = 0;
>>>>       load = 0;
>>>>       reset = 0;
>>>>       
>>>>       #5;
>>>>       clk = 1;
>>>>       load = 1;
>>>>       
>>>>       
>>>>       #5;
>>>>       clk = 0;
>>>>       load=0;
>>>>       
>>>>       #5;
>>>>       clk = 1;
>>>>       
>>>>       #5;
>>>>       clk = 0;
>>>>       
>>>>       #5;
>>>>       clk = 1;
>>>>       
>>>>       #5;
>>>>       clk = 0;
>>>>       load = 1;
>>>>       
>>>>       #5;
>>>>       clk = 1;
>>>>       
>>>>       #5;
>>>>       clk = 0;
>>>>
>>>>       #5;
>>>>       clk = 1;
>>>>       
>>>>       
>>>>    end // initial begin
>>>>    
>>>>    initial
>>>>      begin
>>>>   	$dumpfile ("counter.vcd");
>>>>   	$dumpvars;
>>>>      end
>>>>
>>>>    initial
>>>>      begin
>>>>   	$display("\t\ttime,\tclk,\tin,\tout,\treset,\tload"); $monitor("%d
>>>>   	\t%d \t%d \t%b \t%b \t%b",$time, bin, bout, clk, reset, load);
>>>>      end
>>>>    
>>>> endmodule // test
>>>>
>>>>
>>>>
>> 
>> 
>>

Many thanks Arlet !

-- 
HBV

Article: 127589
Subject: Re: [Resolved]WebPack on GNU/Linux
From: Habib Bouaziz-Viallet <habib@rigel.systems>
Date: 03 Jan 2008 14:44:20 GMT
Links: << >>  << T >>  << A >>
Le Thu, 03 Jan 2008 15:31:26 +0100, Arlet Ottens a écrit:

> Habib Bouaziz-Viallet wrote:
> 
>> Le Thu, 03 Jan 2008 15:02:31 +0100, Arlet Ottens a écrit:
>> 
>>> Habib Bouaziz-Viallet wrote:
>>>> Hi all !
>>>>
>>>> I simulate a simple design (synchronus RESET/LOAD 8-bits counter) with
>>>> iverilog and testbench associated. Waveforms with gtkwave looks good.
>>>>
>>>> I have been trying to synthetise a simple 8bit counter within WebPack ISE
>>>> 9.2 edition.
>>>>
>>>> The "Translate" phase failed :
>>>> ....
>>>> Writing NGD file "counter.ngd" ...
>>>> Writing NGDBUILD log file "counter.bld"...
>>>> NGDBUILD done.
>>>> Process "Translate" failed
>>>>
>>>> ...
>>>>
>>>> What's wrong with this ? 
>>> Did it give you any specific errors ? (click on 'Errors' tab at the bottom).
>>>
>> No. But i have WARNING:Xst:2734 - Property "use_dsp48" is not applicable
>> for this technology. (In Warnings TAB)
>>>
>>>> PS :
>>>>  /* ------------ SIMPLE 8 BITS Synchronous Counter -------------*/
>>>> `timescale 1ns / 1ps
>>>> module counter(in, out, clk, reset, load);
>>>>    input [7:0] in;
>>>>    input clk;
>>>>    input reset;
>>>>    input load;
>>>>    output reg[7:0] out;
>>>>    
>>>>    /* Chargement synchrone par load */
>>>>    always @(posedge clk)
>>>>      begin
>>>> 	out<=out+1;
>>>> 	if (reset==1)
>>>> 	  out[7:0] <= 0;
>>>> 	else if(load==1)
>>>> 	  out[7:0] <= in[7:0];
>>>>      end
>>> You're doing two assignments to 'out' in the same clock cycle.
>> That's right but i'm not sur that this is an issue in that case. I'm
>> learning Verilog at the moment. Thanks.
>>> Try:
>>>
>>>      always @(posedge clk)
>>>        begin
>>>   	if (reset==1)
>>>   	  out[7:0] <= 0;
>>>   	else if(load==1)
>>>   	  out[7:0] <= in[7:0];
>>>          else
>>>            out<=out+1;
>>>        end
>>>
> 
> I tried this counter module in ISE Webpack 9.2 in Linux, and it builds 
> fine.
> 
> The test bench contains constructs that aren't synthesizable, such as 
> the delays, $display() calls, and the fact that it doesn't have any I/O 
> signals.
> 
>>>
>>>
>>>> endmodule
>>>>
>>>> Here the test_bench associated
>>>>
>>>>
>>>> module test();
>>>>    
>>>>    reg [7:0] bin ;
>>>>    wire [7:0] bout ;
>>>>    reg clk, reset, load;   //   wire s, cout;
>>>>
>>>>    counter counter_en_test(bin, bout, clk, reset, load);
>>>>
>>>>    initial
>>>>    begin
>>>>
>>>>       bin = 4'b00010111;
>>>>       clk = 0;
>>>>       load = 0;
>>>>       reset = 0;
>>>>       
>>>>       #5;
>>>>       clk = 1;
>>>>       load = 1;
>>>>       
>>>>       
>>>>       #5;
>>>>       clk = 0;
>>>>       load=0;
>>>>       
>>>>       #5;
>>>>       clk = 1;
>>>>       
>>>>       #5;
>>>>       clk = 0;
>>>>       
>>>>       #5;
>>>>       clk = 1;
>>>>       
>>>>       #5;
>>>>       clk = 0;
>>>>       load = 1;
>>>>       
>>>>       #5;
>>>>       clk = 1;
>>>>       
>>>>       #5;
>>>>       clk = 0;
>>>>
>>>>       #5;
>>>>       clk = 1;
>>>>       
>>>>       
>>>>    end // initial begin
>>>>    
>>>>    initial
>>>>      begin
>>>>   	$dumpfile ("counter.vcd");
>>>>   	$dumpvars;
>>>>      end
>>>>
>>>>    initial
>>>>      begin
>>>>   	$display("\t\ttime,\tclk,\tin,\tout,\treset,\tload"); $monitor("%d
>>>>   	\t%d \t%d \t%b \t%b \t%b",$time, bin, bout, clk, reset, load);
>>>>      end
>>>>    
>>>> endmodule // test
>>>>
>>>>
>>>>
>> 
>> 
>>

The problem was that some files in ../bin/lin/ have not executing perms. i
made this : chmod +x winds* or something ... and it compiles fine now !

Many thank ! 



-- 
HBV

Article: 127590
Subject: Re: WebPack on GNU/Linux
From: Arlet Ottens <usenet+5@c-scape.nl>
Date: Thu, 03 Jan 2008 15:45:58 +0100
Links: << >>  << T >>  << A >>
Habib Bouaziz-Viallet wrote:
> Le Thu, 03 Jan 2008 15:31:26 +0100, Arlet Ottens a écrit:
> 
>> Habib Bouaziz-Viallet wrote:
>>
>>> Le Thu, 03 Jan 2008 15:02:31 +0100, Arlet Ottens a écrit:
>>>
>>>> Habib Bouaziz-Viallet wrote:
>>>>> Hi all !
>>>>>
>>>>> I simulate a simple design (synchronus RESET/LOAD 8-bits counter) with
>>>>> iverilog and testbench associated. Waveforms with gtkwave looks good.
>>>>>
>>>>> I have been trying to synthetise a simple 8bit counter within WebPack ISE
>>>>> 9.2 edition.
>>>>>
>>>>> The "Translate" phase failed :
>>>>> ....
>>>>> Writing NGD file "counter.ngd" ...
>>>>> Writing NGDBUILD log file "counter.bld"...
>>>>> NGDBUILD done.
>>>>> Process "Translate" failed
>>>>>
>>>>> ...
>>>>>
>>>>> What's wrong with this ? 
>>>> Did it give you any specific errors ? (click on 'Errors' tab at the bottom).
>>>>
>>> No. But i have WARNING:Xst:2734 - Property "use_dsp48" is not applicable
>>> for this technology. (In Warnings TAB)

yeah, I get those warnings all the time too.

>>>>> PS :
>>>>>  /* ------------ SIMPLE 8 BITS Synchronous Counter -------------*/
>>>>> `timescale 1ns / 1ps
>>>>> module counter(in, out, clk, reset, load);
>>>>>    input [7:0] in;
>>>>>    input clk;
>>>>>    input reset;
>>>>>    input load;
>>>>>    output reg[7:0] out;
>>>>>    
>>>>>    /* Chargement synchrone par load */
>>>>>    always @(posedge clk)
>>>>>      begin
>>>>> 	out<=out+1;
>>>>> 	if (reset==1)
>>>>> 	  out[7:0] <= 0;
>>>>> 	else if(load==1)
>>>>> 	  out[7:0] <= in[7:0];
>>>>>      end

>> I tried this counter module in ISE Webpack 9.2 in Linux, and it builds 
>> fine.
> waouh ! Is it a GNU/Linux ditrib pb ? I'm running debian GNU/Linux.

Ubuntu (Edgy), so it's debian based. I had to install the open motif 
libs, but that's it.

What device are you targetting ?

Article: 127591
Subject: Re: WebPack on GNU/Linux
From: Habib Bouaziz-Viallet <habib@rigel.systems>
Date: 03 Jan 2008 14:55:31 GMT
Links: << >>  << T >>  << A >>
Le Thu, 03 Jan 2008 15:45:58 +0100, Arlet Ottens a écrit:

> Habib Bouaziz-Viallet wrote:
>> Le Thu, 03 Jan 2008 15:31:26 +0100, Arlet Ottens a écrit:
>> 
>>> Habib Bouaziz-Viallet wrote:
>>>
>>>> Le Thu, 03 Jan 2008 15:02:31 +0100, Arlet Ottens a écrit:
>>>>
>>>>> Habib Bouaziz-Viallet wrote:
>>>>>> Hi all !
>>>>>>
>>>>>> I simulate a simple design (synchronus RESET/LOAD 8-bits counter) with
>>>>>> iverilog and testbench associated. Waveforms with gtkwave looks good.
>>>>>>
>>>>>> I have been trying to synthetise a simple 8bit counter within WebPack ISE
>>>>>> 9.2 edition.
>>>>>>
>>>>>> The "Translate" phase failed :
>>>>>> ....
>>>>>> Writing NGD file "counter.ngd" ...
>>>>>> Writing NGDBUILD log file "counter.bld"...
>>>>>> NGDBUILD done.
>>>>>> Process "Translate" failed
>>>>>>
>>>>>> ...
>>>>>>
>>>>>> What's wrong with this ? 
>>>>> Did it give you any specific errors ? (click on 'Errors' tab at the bottom).
>>>>>
>>>> No. But i have WARNING:Xst:2734 - Property "use_dsp48" is not applicable
>>>> for this technology. (In Warnings TAB)
> 
> yeah, I get those warnings all the time too.
> 
>>>>>> PS :
>>>>>>  /* ------------ SIMPLE 8 BITS Synchronous Counter -------------*/
>>>>>> `timescale 1ns / 1ps
>>>>>> module counter(in, out, clk, reset, load);
>>>>>>    input [7:0] in;
>>>>>>    input clk;
>>>>>>    input reset;
>>>>>>    input load;
>>>>>>    output reg[7:0] out;
>>>>>>    
>>>>>>    /* Chargement synchrone par load */
>>>>>>    always @(posedge clk)
>>>>>>      begin
>>>>>> 	out<=out+1;
>>>>>> 	if (reset==1)
>>>>>> 	  out[7:0] <= 0;
>>>>>> 	else if(load==1)
>>>>>> 	  out[7:0] <= in[7:0];
>>>>>>      end
> 
>>> I tried this counter module in ISE Webpack 9.2 in Linux, and it builds 
>>> fine.
>> waouh ! Is it a GNU/Linux ditrib pb ? I'm running debian GNU/Linux.
> 
> Ubuntu (Edgy), so it's debian based. I had to install the open motif 
> libs, but that's it.
Open motif ?? I have download this morning the huge file (1.7G) from
Xilinx and just type ./setup as the promise and do weird thing as download
ServicePack or something and ... finally it works (almost ... see my post)
> 
> What device are you targetting ?

Oh just CPLD's for the moment 'cause i'm trying to speak Verilog as well i
speak C/C++.

-- 
HBV

Article: 127592
Subject: Re: round,fix and floor algortihms
From: Andy <jonesandy@comcast.net>
Date: Thu, 3 Jan 2008 06:57:53 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 3, 7:16 am, "Symon" <symon_bre...@hotmail.com> wrote:
> <FPG...@gmail.com> wrote in message
>
> news:360692c0-6368-485b-bb36-42c9d33a8204@h11g2000prf.googlegroups.com...>I would like to know which round,fix and floor algorithm would be best
> > to be implemented on an FPGA. I am working on a DSP project. I want to
> > write funtions in VHDL which can be called and would return the round,
> > fix and floor value of integers.
>
> I'm missing something. How do you 'round' or 'floor' an integer? They
> already are, aren't they?
> Cheers, Syms.

For integers, I think it should be approached as round(), ceil() or
floor() of a ratio of two integers, since rational numbers (including
rational approximations of non-rational numbers) are the primary
issue, not integers. Unsigned integer division uses floor anyway. I've
implemented unsigned ceil(n/d) before as (n + d - 1) / d, used for
constants only (no synthesized hardware created). I haven't tried it,
but I suppose something like (n + d / 2) / d would work for unsigned
round()? It makes my head hurt to think about signed versions of
these...

In hardware, bit operations are probably more efficient (i.e. perform
a fixed point division, and add one if the fraction msb is set for
round(), or if any fraction bits are set for ceil(), then truncate the
fraction. Anyone looked at the fixed point package to see how they do
it?

Andy

Article: 127593
Subject: Camera connection on XUPV2P
From: "MJ Pearson" <mjp500@york.ac.uk>
Date: Thu, 03 Jan 2008 09:28:04 -0600
Links: << >>  << T >>  << A >>
Hello,

I've some issues hooking up some external components (camera link based
cameras) to my XUPV2P board. I've built a PCB which connects the high
speed expansion port of the XUPV2P to the outputs of the National Chip
DS90CR288A. I've two cameras running simultaneously, so thats two chips on
the PCB. 

On the high speed expansion port of the XUPV2P there's a clock input, but
because I've got two external clocks (one from each chip), I decided to
attach them to the 'regular' FPGA pins. Sorry if this makes no sense! The
other high speed expansion port connections are connected to the data
signals, and data-valid signals from the chips.

I've created a peripheral which samples the camera data according to these
clock signals, and then sampled again using the Bus2IP clock. I use a
microblaze processor just to output various data. On the scope, my clock
signals seem to have a period of 16ns, is this too fast for what I want to
do? The voltage swing is about 600mV. My design doesn't seem to be working!
Just wondered if anyone had any suggestions comments on how best to debug
and proceed.

Article: 127594
Subject: Re: round,fix and floor algortihms
From: FPGA23@gmail.com
Date: Thu, 3 Jan 2008 07:29:31 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 3, 9:57=A0am, Andy <jonesa...@comcast.net> wrote:
> On Jan 3, 7:16 am, "Symon" <symon_bre...@hotmail.com> wrote:
>
> > <FPG...@gmail.com> wrote in message
>
> >news:360692c0-6368-485b-bb36-42c9d33a8204@h11g2000prf.googlegroups.com...=
>Iwould like to know which round,fix and floor algorithm would be best
> > > to be implemented on an FPGA. I am working on a DSP project. I want to=

> > > write funtions in VHDL which can be called and would return the round,=

> > > fix and floor value of integers.
>
> > I'm missing something. How do you 'round' or 'floor' an integer? They
> > already are, aren't they?
> > Cheers, Syms.
>
> For integers, I think it should be approached as round(), ceil() or
> floor() of a ratio of two integers, since rational numbers (including
> rational approximations of non-rational numbers) are the primary
> issue, not integers. Unsigned integer division uses floor anyway. I've
> implemented unsigned ceil(n/d) before as (n + d - 1) / d, used for
> constants only (no synthesized hardware created). I haven't tried it,
> but I suppose something like (n + d / 2) / d would work for unsigned
> round()? It makes my head hurt to think about signed versions of
> these...
>
> In hardware, bit operations are probably more efficient (i.e. perform
> a fixed point division, and add one if the fraction msb is set for
> round(), or if any fraction bits are set for ceil(), then truncate the
> fraction. Anyone looked at the fixed point package to see how they do
> it?
>
> Andy

I want to implement Round Half Up algorithm in FPGA's. The inputs are
in the form unsigned_logic_vector having a bit width "bw1". Output is
return unsigned_logic_vector of width "bw2". I would like to know how
to implement this. I am not sure, but i guess I have to add a '10'
after the decimal point. But I dont understand one thing. How would I
know where the decimal point is in a string of '1' and '0' in the
input.

Article: 127595
Subject: Re: round,fix and floor algortihms
From: "Symon" <symon_brewer@hotmail.com>
Date: Thu, 3 Jan 2008 15:33:42 -0000
Links: << >>  << T >>  << A >>
Do you mean binary point rather than decimal point?
http://en.wikipedia.org/wiki/Binary_point
Cheers, Syms. 



Article: 127596
Subject: Re: round,fix and floor algortihms
From: Andy <jonesandy@comcast.net>
Date: Thu, 3 Jan 2008 07:37:49 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 3, 9:29 am, FPG...@gmail.com wrote:
> On Jan 3, 9:57 am, Andy <jonesa...@comcast.net> wrote:
>
>
>
> > On Jan 3, 7:16 am, "Symon" <symon_bre...@hotmail.com> wrote:
>
> > > <FPG...@gmail.com> wrote in message
>
> > >news:360692c0-6368-485b-bb36-42c9d33a8204@h11g2000prf.googlegroups.com...>Iwouldlike to know which round,fix and floor algorithm would be best
> > > > to be implemented on an FPGA. I am working on a DSP project. I want to
> > > > write funtions in VHDL which can be called and would return the round,
> > > > fix and floor value of integers.
>
> > > I'm missing something. How do you 'round' or 'floor' an integer? They
> > > already are, aren't they?
> > > Cheers, Syms.
>
> > For integers, I think it should be approached as round(), ceil() or
> > floor() of a ratio of two integers, since rational numbers (including
> > rational approximations of non-rational numbers) are the primary
> > issue, not integers. Unsigned integer division uses floor anyway. I've
> > implemented unsigned ceil(n/d) before as (n + d - 1) / d, used for
> > constants only (no synthesized hardware created). I haven't tried it,
> > but I suppose something like (n + d / 2) / d would work for unsigned
> > round()? It makes my head hurt to think about signed versions of
> > these...
>
> > In hardware, bit operations are probably more efficient (i.e. perform
> > a fixed point division, and add one if the fraction msb is set for
> > round(), or if any fraction bits are set for ceil(), then truncate the
> > fraction. Anyone looked at the fixed point package to see how they do
> > it?
>
> > Andy
>
> I want to implement Round Half Up algorithm in FPGA's. The inputs are
> in the form unsigned_logic_vector having a bit width "bw1". Output is
> return unsigned_logic_vector of width "bw2". I would like to know how
> to implement this. I am not sure, but i guess I have to add a '10'
> after the decimal point. But I dont understand one thing. How would I
> know where the decimal point is in a string of '1' and '0' in the
> input.

Using std_logic_vector, signed or unsigned types, you just have to
keep track of the binary point yourself.

That's the beauty of the fixed point package and sfixed or ufixed
types: bit 0 is always lsb of integer, bit -1 is msb of fraction.
Positive bit indexes are the integer, and negative ones are the
fraction.

Andy

Article: 127597
Subject: Re: WebPack on GNU/Linux
From: Uwe Bonnes <bon@hertz.ikp.physik.tu-darmstadt.de>
Date: Thu, 3 Jan 2008 15:41:00 +0000 (UTC)
Links: << >>  << T >>  << A >>
Habib Bouaziz-Viallet <habib@rigel.systems> wrote:
...
> >>>>>> I simulate a simple design (synchronus RESET/LOAD 8-bits counter

Please edit your quote to keep it readable

-- 
Uwe Bonnes                bon@elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------

Article: 127598
Subject: Re: round,fix and floor algortihms
From: Dave <dhschetz@gmail.com>
Date: Thu, 3 Jan 2008 07:58:39 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 3, 10:37=A0am, Andy <jonesa...@comcast.net> wrote:
> On Jan 3, 9:29 am, FPG...@gmail.com wrote:
>
>
>
>
>
> > On Jan 3, 9:57 am, Andy <jonesa...@comcast.net> wrote:
>
> > > On Jan 3, 7:16 am, "Symon" <symon_bre...@hotmail.com> wrote:
>
> > > > <FPG...@gmail.com> wrote in message
>
> > > >news:360692c0-6368-485b-bb36-42c9d33a8204@h11g2000prf.googlegroups.co=
m...>Iwouldliketo know which round,fix and floor algorithm would be best
> > > > > to be implemented on an FPGA. I am working on a DSP project. I wan=
t to
> > > > > write funtions in VHDL which can be called and would return the ro=
und,
> > > > > fix and floor value of integers.
>
> > > > I'm missing something. How do you 'round' or 'floor' an integer? The=
y
> > > > already are, aren't they?
> > > > Cheers, Syms.
>
> > > For integers, I think it should be approached as round(), ceil() or
> > > floor() of a ratio of two integers, since rational numbers (including
> > > rational approximations of non-rational numbers) are the primary
> > > issue, not integers. Unsigned integer division uses floor anyway. I've=

> > > implemented unsigned ceil(n/d) before as (n + d - 1) / d, used for
> > > constants only (no synthesized hardware created). I haven't tried it,
> > > but I suppose something like (n + d / 2) / d would work for unsigned
> > > round()? It makes my head hurt to think about signed versions of
> > > these...
>
> > > In hardware, bit operations are probably more efficient (i.e. perform
> > > a fixed point division, and add one if the fraction msb is set for
> > > round(), or if any fraction bits are set for ceil(), then truncate the=

> > > fraction. Anyone looked at the fixed point package to see how they do
> > > it?
>
> > > Andy
>
> > I want to implement Round Half Up algorithm in FPGA's. The inputs are
> > in the form unsigned_logic_vector having a bit width "bw1". Output is
> > return unsigned_logic_vector of width "bw2". I would like to know how
> > to implement this. I am not sure, but i guess I have to add a '10'
> > after the decimal point. But I dont understand one thing. How would I
> > know where the decimal point is in a string of '1' and '0' in the
> > input.
>
> Using std_logic_vector, signed or unsigned types, you just have to
> keep track of the binary point yourself.
>
> That's the beauty of the fixed point package and sfixed or ufixed
> types: bit 0 is always lsb of integer, bit -1 is msb of fraction.
> Positive bit indexes are the integer, and negative ones are the
> fraction.
>
> Andy- Hide quoted text -
>
> - Show quoted text -

It's always helped me to comment my code where I use a fixed-point
numbers, showing where the binary point is  I describe the number as
"Qx.y", where x is the umber of integral bits (including sign), and y
is the number of fractional bits. Something like:

signal x : signed(15 downto 0); -- Q1.15
signal y : signed(15 downto 0); -- Q1.15
signal z : signed(31 downto 0); -- Q2.30
signal a : signed(16 downto 0); -- Q2.15

=2E..

z <=3D x * y; -- Q1.15 * Q1.15 =3D Q2.30
a <=3D x + y; -- Q1.15 + Q1.15 =3D Q2.15 (to avoid overflow)

Dave

Article: 127599
Subject: Re: round,fix and floor algortihms
From: FPGA23@gmail.com
Date: Thu, 3 Jan 2008 08:55:56 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 3, 10:58=A0am, Dave <dhsch...@gmail.com> wrote:
> On Jan 3, 10:37=A0am, Andy <jonesa...@comcast.net> wrote:
>
>
>
>
>
> > On Jan 3, 9:29 am, FPG...@gmail.com wrote:
>
> > > On Jan 3, 9:57 am, Andy <jonesa...@comcast.net> wrote:
>
> > > > On Jan 3, 7:16 am, "Symon" <symon_bre...@hotmail.com> wrote:
>
> > > > > <FPG...@gmail.com> wrote in message
>
> > > > >news:360692c0-6368-485b-bb36-42c9d33a8204@h11g2000prf.googlegroups.=
com...>Iwouldliketoknow which round,fix and floor algorithm would be best
> > > > > > to be implemented on an FPGA. I am working on a DSP project. I w=
ant to
> > > > > > write funtions in VHDL which can be called and would return the =
round,
> > > > > > fix and floor value of integers.
>
> > > > > I'm missing something. How do you 'round' or 'floor' an integer? T=
hey
> > > > > already are, aren't they?
> > > > > Cheers, Syms.
>
> > > > For integers, I think it should be approached as round(), ceil() or
> > > > floor() of a ratio of two integers, since rational numbers (includin=
g
> > > > rational approximations of non-rational numbers) are the primary
> > > > issue, not integers. Unsigned integer division uses floor anyway. I'=
ve
> > > > implemented unsigned ceil(n/d) before as (n + d - 1) / d, used for
> > > > constants only (no synthesized hardware created). I haven't tried it=
,
> > > > but I suppose something like (n + d / 2) / d would work for unsigned=

> > > > round()? It makes my head hurt to think about signed versions of
> > > > these...
>
> > > > In hardware, bit operations are probably more efficient (i.e. perfor=
m
> > > > a fixed point division, and add one if the fraction msb is set for
> > > > round(), or if any fraction bits are set for ceil(), then truncate t=
he
> > > > fraction. Anyone looked at the fixed point package to see how they d=
o
> > > > it?
>
> > > > Andy
>
> > > I want to implement Round Half Up algorithm in FPGA's. The inputs are
> > > in the form unsigned_logic_vector having a bit width "bw1". Output is
> > > return unsigned_logic_vector of width "bw2". I would like to know how
> > > to implement this. I am not sure, but i guess I have to add a '10'
> > > after the decimal point. But I dont understand one thing. How would I
> > > know where the decimal point is in a string of '1' and '0' in the
> > > input.
>
> > Using std_logic_vector, signed or unsigned types, you just have to
> > keep track of the binary point yourself.
>
> > That's the beauty of the fixed point package and sfixed or ufixed
> > types: bit 0 is always lsb of integer, bit -1 is msb of fraction.
> > Positive bit indexes are the integer, and negative ones are the
> > fraction.
>
> > Andy- Hide quoted text -
>
> > - Show quoted text -
>
> It's always helped me to comment my code where I use a fixed-point
> numbers, showing where the binary point is =A0I describe the number as
> "Qx.y", where x is the umber of integral bits (including sign), and y
> is the number of fractional bits. Something like:
>
> signal x : signed(15 downto 0); -- Q1.15
> signal y : signed(15 downto 0); -- Q1.15
> signal z : signed(31 downto 0); -- Q2.30
> signal a : signed(16 downto 0); -- Q2.15
>
> ...
>
> z <=3D x * y; -- Q1.15 * Q1.15 =3D Q2.30
> a <=3D x + y; -- Q1.15 + Q1.15 =3D Q2.15 (to avoid overflow)
>
> Dave- Hide quoted text -
>
> - Show quoted text -

I am still under confusion. I understand binary point. What I dont
understand is if I get an input whose bit width is different than the
bit width of ouptut, how will I know where the bianry point of the
inout is. I am trying to write a function for floor, ceiling and round
in VHDL. All these functions would have variable input and output bit
widths. How will I know where the binary point of the output is?

Thanks



Site Home   Archive Home   FAQ Home   How to search the Archive   How to Navigate the Archive   
Compare FPGA features and resources   

Threads starting:
1994JulAugSepOctNovDec1994
1995JanFebMarAprMayJunJulAugSepOctNovDec1995
1996JanFebMarAprMayJunJulAugSepOctNovDec1996
1997JanFebMarAprMayJunJulAugSepOctNovDec1997
1998JanFebMarAprMayJunJulAugSepOctNovDec1998
1999JanFebMarAprMayJunJulAugSepOctNovDec1999
2000JanFebMarAprMayJunJulAugSepOctNovDec2000
2001JanFebMarAprMayJunJulAugSepOctNovDec2001
2002JanFebMarAprMayJunJulAugSepOctNovDec2002
2003JanFebMarAprMayJunJulAugSepOctNovDec2003
2004JanFebMarAprMayJunJulAugSepOctNovDec2004
2005JanFebMarAprMayJunJulAugSepOctNovDec2005
2006JanFebMarAprMayJunJulAugSepOctNovDec2006
2007JanFebMarAprMayJunJulAugSepOctNovDec2007
2008JanFebMarAprMayJunJulAugSepOctNovDec2008
2009JanFebMarAprMayJunJulAugSepOctNovDec2009
2010JanFebMarAprMayJunJulAugSepOctNovDec2010
2011JanFebMarAprMayJunJulAugSepOctNovDec2011
2012JanFebMarAprMayJunJulAugSepOctNovDec2012
2013JanFebMarAprMayJunJulAugSepOctNovDec2013
2014JanFebMarAprMayJunJulAugSepOctNovDec2014
2015JanFebMarAprMayJunJulAugSepOctNovDec2015
2016JanFebMarAprMayJunJulAugSepOctNovDec2016
2017JanFebMarAprMayJunJulAugSepOctNovDec2017
2018JanFebMarAprMayJunJulAugSepOctNovDec2018
2019JanFebMarAprMayJunJulAugSepOctNovDec2019
2020JanFebMarAprMay2020

Authors:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Custom Search