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 45025

Article: 45025
Subject: Re: Bi-Directional Bus problem in Xilinx FPGA
From: Laurent Gauch <laurent.gauch@amontec.com>
Date: Wed, 10 Jul 2002 10:44:29 +0200
Links: << >>  << T >>  << A >>
Hi,

I think you problem comes from the your following lines (Your read and 
write process is bad too):
    DATA  <= DATA_OUT when (RD_N = '0') else (others => 'Z'); -- line OK
    DATA_IN  <= DATA     when (WR_N = '0') else DATA_IN; -- BAD

Like this, your synthesizer would not understand your bidirectional 
logic. You do not need to add conditions on DATA_IN <= DATA, because 
DATA_in is ever DATA !!! Your condition WR_N = '0' comes only in your 
write process.

I would like write :
    DATA <= DATA_OUT when (RD_N = '0') else (others => 'Z'); -- line OK
    DATA_IN <= DATA; -- line OK

--------------------------------------------------------------
In VHDL, my first rule is to do smallest process as possible !
--------------------------------------------------------------

In your case, the read part and write part need to be placed in two 
different process.

Read process is an asynchronous process, you do not need flip-flops, but 
just a big mux
Write process is a an synchronous process

your code will be :
  ----------------------------------------
  -- write process
  ----------------------------------------
  process (CLK, RESET) begin
    if(RESET = '1') then
      REG1_DATA <= (others => '0');
      REG2_DATA <= (others => '0');
    elsif(CLK'event and CLK = '1') then
      if (WR_N = '0') then  --bus write
        case ADDR(9 downto 0) is
          when REG1_ADDR                      =>
             REG1_DATA(15 downto 0) <= DATA_IN;
             REG2_DATA(15 downto 0) <= REG2_DATA(15 downto 0);
          when REG2_ADDR                      =>
             REG1_DATA(15 downto 0) <= REG1_DATA(15 downto 0);
             REG2_DATA(15 downto 0) <= DATA_IN;
          when others                         =>
             REG1_DATA              <= (others => '-');
             REG2_DATA              <= (others => '-');
        end case;
       end if ;
     end if ;
  end process ;


  -----------------------------------------
  -- read process
  -----------------------------------------
  process (RD_N, ADDR, REG1_DATA, REG2_DATA) begin -- read process
    if (RD_N = '0') then  --bus read
      case ADDR(9 downto 0) is
        when REG1_ADDR                      =>
          DATA_OUT               <= REG1_DATA(15 downto 0);
        when REG2_ADDR                      =>
          DATA_OUT               <= REG2_DATA(15 downto 0);
        when others                         =>
          DATA_OUT               <= (others => '0');  -- <--high imp. is 
not declared here
      end case;
    else DATA_OUT <= (others => '0');
    end if;
  end process;


  end BEH;


When writing VHDL bus, register, and others ... you need to think 
HARDWARE ...


Regards
Laurent Gauch
Amontec
www.amontec.com
___________________________________________________________
Introducing prototyping Boards based PCI and Stand-alone for rapid 
FPGA/ASIC developments!




M Schreiber wrote:

> Hello,
> 	I am having a problem implementing a bi-directional bus within a
> Xilinx virtex 2 part.  I have read through the numerous postings and
> have not found a clear answer.  I have implemented a bus that works
> fine in simulation, but when it is synthesized, fpga express says it
> cannot determine the port type and replaces it with an output port
> (FPGA-pmap-18).  My architecture consists of a set of registers that
> exist in separate vhdl blocks.  The designs synthesizes normally and
> functions normally on a virtex 2 demo board when the registers reside
> in the same block.  When I split them up, I run into the above
> problem.  I ran across someone else's post, that said I need to use a
> mux to have an internal bi-directional bus, is this true?  Also at one
> point in the back-end xilinx tool I got a message asking me to set
> XVK_MAP_ALLOW_BUS_CONTENTION environment variable.   Any help would be
> greatly appreciated.  I have included a simplified sample of one of
> the vhdl blocks.
> Thanks in Advance,
> 	Mike Schreiber
> 	Hardware Engineer
> mschreiber75@yahoo.com
> entity SLAVE_1 is
>   port (
>     ADDR           : in    std_logic_vector (9 downto 0);  --8-bit
> address bus, temporarily 9-bit
>     DATA           : inout std_logic_vector (15 downto 0);  --8-bit
> data bus
>     RD_N           : in    std_logic;   --read signal, active-low
>     WR_N           : in    std_logic;   --write signal, write is
> active-low
>     RESET          : in    std_logic;   --system reset
>     CLK            : in    std_logic;   --system clock          
>     BLOCK_SELECT_N : in    std_logic    --block select enable
>     );
> end SLAVE_1;
> 
> --}} End of automatically maintained section
> 
> architecture BEH of SLAVE_1 is
>   signal   DATA_IN   : std_logic_vector(15 downto 0);
>   signal   DATA_OUT  : std_logic_vector(15 downto 0);
>   signal   DUMMY_REG : std_logic_vector(15 downto 0);
>   --Internal Registers
>   signal   REG1_DATA : std_logic_vector(15 downto 0);  
>   signal   REG2_DATA : std_logic_vector(15 downto 0);  
>   --address range: 0x00 - 0x1f, block address: 1 
>   constant REG1_ADDR : std_logic_vector := "0000000000";  --address of
> described register
>   constant REG2_ADDR : std_logic_vector := "0000000001";  --address of
> described register
> begin
>   -- <<enter your statements here>>
>   DATA  <= DATA_OUT when (RD_N = '0') else (others => 'Z');
>   DATA_IN  <= DATA     when (WR_N = '0') else DATA_IN;
>   process (CLK, RESET, ADDR, DATA) begin  --read write process    
>     if(RESET = '1') then
>       REG1_DATA <= (others => '0');
>       REG2_DATA <= (others => '0');
>     elsif(CLK'event and CLK = '1') then
>       if (WR_N = '0') then  --bus write
>         case ADDR(9 downto 0) is
>           when REG1_ADDR                      =>
>             REG1_DATA(15 downto 0) <= DATA_IN;
>             REG2_DATA(15 downto 0) <= REG2_DATA(15 downto 0);
>           when REG2_ADDR                      =>
>             REG1_DATA(15 downto 0) <= REG1_DATA(15 downto 0);
>             REG2_DATA(15 downto 0) <= DATA_IN;
>           when others                         =>
>             REG1_DATA              <= REG1_DATA;
>             REG2_DATA              <= REG2_DATA;
>         end case;
>       elsif (RD_N = '0') then  --bus read
>         case ADDR(9 downto 0) is
>           when REG1_ADDR                      =>
>             DATA_OUT               <= REG1_DATA(15 downto 0);
>           when REG2_ADDR                      =>
>             DATA_OUT               <= REG2_DATA(15 downto 0);
>           when others                         =>
>             DATA_OUT               <= (others => 'Z');  --high imp.
> data bus
>         end case;
>       else
>         DUMMY_REG                  <= DUMMY_REG;
>       end if;
>     end if;
>  end process;
>  end BEH;
> 


Article: 45026
Subject: Re: 32 bit multiplier (1 cycle)
From: Ray Andraka <ray@andraka.com>
Date: Wed, 10 Jul 2002 11:24:44 GMT
Links: << >>  << T >>  << A >>
If you are using Xilinx VirtexII or Altera Stratix, these devices have
embedded multipliers which you can instantiate to accomplish this task.  If
you are using some other device you'll have to construct your own.  The
compilers, if they, infer a multiply at all (only some do) do not produce
anything particularly fast.  You have a better shot at getting what you want
by using the core generators from the respective vendor to generate a placed
multiplier macro.  You can also build your own, in which case I encourage you
to visit the multipliers page on my website for a discussion of optimal
structures for FPGAs.

Reala wrote:

> Dear all,
>
> I would like to design a 32 bit multiplier  (16bit X 16bit) for MCU.
> The multiply operation for MCU is one cycle only.
> Normally, the multiply operation is about 4 cycles. It is a difficult task
> for me.
> Is there any special method to make a smaller size multiplier with single
> cycle do this?
> Moreover, if i write this by verilog, can the complier take care this kind
> of task? or depend on the source file of my design? or must do this by
> schematic
> design?
>
> Anyone have idea to do this? Thank a lot.
>
> Reala

--
--Ray Andraka, P.E.
President, the Andraka Consulting Group, Inc.
401/884-7930     Fax 401/884-7950
email ray@andraka.com
http://www.andraka.com

 "They that give up essential liberty to obtain a little
  temporary safety deserve neither liberty nor safety."
                                          -Benjamin Franklin, 1759



Article: 45027
Subject: LogiCore and PLX
From: "BROTO Laurent" <lbroto@free.fr>
Date: Wed, 10 Jul 2002 14:19:29 +0200
Links: << >>  << T >>  << A >>
Today, we've a Spartan with a PLX. We would like to introduce Logicore in
Spartan to replace PLX but IO aren't the same (excuse me for my english...
I'm french).
Do you know an interface to use my old VHDL program (with PLX IO) with a
logicore without modification ?

Thanks a lot,

BROTO Laurent



Article: 45028
Subject: Re: Security features
From: Mike Rosing <rosing@neurophys.wisc.edu>
Date: Wed, 10 Jul 2002 07:19:59 -0500
Links: << >>  << T >>  << A >>
Paul wrote:
> Hi All,
> Are there any security features in FPGA's that I can use to protect
> software?

Yes, check out Virtex-2.  It uses triple DES keys so the rom data is
encrypted when you get the product into the field.  You need to talk
to the Xilinx guys to find out how to get the keys into your chips tho.

Patience, persistence, truth,
Dr. mike

-- 
Mike Rosing
www.beastrider.com                   BeastRider, LLC
SHARC debug tools


Article: 45029
Subject: How to locate the combinational loop in RTL source
From: shengyu_shen@hotmail.com (ssy)
Date: 10 Jul 2002 05:55:18 -0700
Links: << >>  << T >>  << A >>
Hi everyone

I am using synplify 6.2.4 to synthesis and Quartus II to P&R

after all done, I found there are some combinational loops in my
design, but the report is based on the postsyn netlist, not on the RTL
source, so How can I know which part of my design cause these loops?

Best Regard

Article: 45030
Subject: Re: Xilinix or Altera - which dev-board?
From: "Stefan Schulte" <St_Schulte@web.de>
Date: Wed, 10 Jul 2002 15:31:36 +0200
Links: << >>  << T >>  << A >>

"Ben Twijnstra" <bentw@SPAM.ME.NOT.chello.nl> schrieb im Newsbeitrag
news:YJJW8.349$Gr3.1222@amstwist00...

| Check out the Altera University program
| (http://www.altera.com/education/univ/unv-kits.html). The basic board has
| both an SRAM-based FPGA (10K20) and a CPLD (MAX7128). These boards (plus
| software) are available for really low prices for university students.
|
| You can do quite a few things with that board. If it seems to do what you
| want it to, you can order it in germany by going to the following web page:
|
| http://www.altera.com/education/univ/program_regions/unv-germany.html

Hi Ben!

That sounds quite well. I'll have a look at it ...

Thanks,

Steven



Article: 45031
Subject: Re: Bi-Directional Bus problem in Xilinx FPGA
From: Laurent Gauch <laurent.gauch@amontec.com>
Date: Wed, 10 Jul 2002 17:33:11 +0200
Links: << >>  << T >>  << A >>
Did you just try my solution, in my first answer ???

Take time to do it, and you will anderstand : you just need two process, 
one write process, one read process.

Or try to draw the schematic of what you need(flip-flop, mux, ...)

YOU NEED TO SEE THE SCHEMATIC WHEN YOUR ARE WRITING VHDL CODE

Laurent Gauch
www.amontec.com

M Schreiber wrote:

> Hari Devanath <harid@xilinx.com> wrote in message news:<3D2B4A93.D6A6727D@xilinx.com>...
> 
>>Hi Mike,
>>Make sure that all signals declared as bidirectional are actually used as
>>both input
>>and output.  See (Xilinx Solution 3296) for more details.
>>
>>The above warnings usually occur when there are multiple three-state
>>inferences
>>driving the inout signal.  Rather than choosing one three-state to place in
>>the IOB,
>>Express will place all the three-state using internal TBUFs then use a
>>standard
>>OBUF at the IOB.  Examine your HDL to be sure the bidirectional structure is
>>explicit.
>>
>>Hari.
>>
>>M Schreiber wrote:
>>
>>
>>>Hello,
>>>        I am having a problem implementing a bi-directional bus within a
>>>Xilinx virtex 2 part.  I have read through the numerous postings and
>>>have not found a clear answer.  I have implemented a bus that works
>>>fine in simulation, but when it is synthesized, fpga express says it
>>>cannot determine the port type and replaces it with an output port
>>>(FPGA-pmap-18).  My architecture consists of a set of registers that
>>>exist in separate vhdl blocks.  The designs synthesizes normally and
>>>functions normally on a virtex 2 demo board when the registers reside
>>>in the same block.  When I split them up, I run into the above
>>>problem.  I ran across someone else's post, that said I need to use a
>>>mux to have an internal bi-directional bus, is this true?  Also at one
>>>point in the back-end xilinx tool I got a message asking me to set
>>>XVK_MAP_ALLOW_BUS_CONTENTION environment variable.   Any help would be
>>>greatly appreciated.  I have included a simplified sample of one of
>>>the vhdl blocks.
>>>Thanks in Advance,
>>>        Mike Schreiber
>>>        Hardware Engineer
>>>mschreiber75@yahoo.com
>>>entity SLAVE_1 is
>>>  port (
>>>    ADDR           : in    std_logic_vector (9 downto 0);  --8-bit
>>>address bus, temporarily 9-bit
>>>    DATA           : inout std_logic_vector (15 downto 0);  --8-bit
>>>data bus
>>>    RD_N           : in    std_logic;   --read signal, active-low
>>>    WR_N           : in    std_logic;   --write signal, write is
>>>active-low
>>>    RESET          : in    std_logic;   --system reset
>>>    CLK            : in    std_logic;   --system clock
>>>    BLOCK_SELECT_N : in    std_logic    --block select enable
>>>    );
>>>end SLAVE_1;
>>>
>>>--}} End of automatically maintained section
>>>
>>>architecture BEH of SLAVE_1 is
>>>  signal   DATA_IN   : std_logic_vector(15 downto 0);
>>>  signal   DATA_OUT  : std_logic_vector(15 downto 0);
>>>  signal   DUMMY_REG : std_logic_vector(15 downto 0);
>>>  --Internal Registers
>>>  signal   REG1_DATA : std_logic_vector(15 downto 0);
>>>  signal   REG2_DATA : std_logic_vector(15 downto 0);
>>>  --address range: 0x00 - 0x1f, block address: 1
>>>  constant REG1_ADDR : std_logic_vector := "0000000000";  --address of
>>>described register
>>>  constant REG2_ADDR : std_logic_vector := "0000000001";  --address of
>>>described register
>>>begin
>>>  -- <<enter your statements here>>
>>>  DATA  <= DATA_OUT when (RD_N = '0') else (others => 'Z');
>>>  DATA_IN  <= DATA     when (WR_N = '0') else DATA_IN;
>>>  process (CLK, RESET, ADDR, DATA) begin  --read write process
>>>    if(RESET = '1') then
>>>      REG1_DATA <= (others => '0');
>>>      REG2_DATA <= (others => '0');
>>>    elsif(CLK'event and CLK = '1') then
>>>      if (WR_N = '0') then  --bus write
>>>        case ADDR(9 downto 0) is
>>>          when REG1_ADDR                      =>
>>>            REG1_DATA(15 downto 0) <= DATA_IN;
>>>            REG2_DATA(15 downto 0) <= REG2_DATA(15 downto 0);
>>>          when REG2_ADDR                      =>
>>>            REG1_DATA(15 downto 0) <= REG1_DATA(15 downto 0);
>>>            REG2_DATA(15 downto 0) <= DATA_IN;
>>>          when others                         =>
>>>            REG1_DATA              <= REG1_DATA;
>>>            REG2_DATA              <= REG2_DATA;
>>>        end case;
>>>      elsif (RD_N = '0') then  --bus read
>>>        case ADDR(9 downto 0) is
>>>          when REG1_ADDR                      =>
>>>            DATA_OUT               <= REG1_DATA(15 downto 0);
>>>          when REG2_ADDR                      =>
>>>            DATA_OUT               <= REG2_DATA(15 downto 0);
>>>          when others                         =>
>>>            DATA_OUT               <= (others => 'Z');  --high imp.
>>>data bus
>>>        end case;
>>>      else
>>>        DUMMY_REG                  <= DUMMY_REG;
>>>      end if;
>>>    end if;
>>> end process;
>>> end BEH;
>>>
> 
> I took a look at the xilinx solution 3297, but i am not sure if that
> applies in this case.  I also took a look at the hdl and the only port
> that I am using as a bi-directional port is the DATA port, and it is
> being used a bi-directional signal (as far as I can see).  Maybe I can
> clarify the configuration, I didn't do a very good kob the first time.
>                          __________
> DATA <->----------------|DATA      |
>                |        |          |
>                |        |  Reg1    |
>                |        |__________|
>                |
>                |        ___________
>                |________|DATA      |
>                         |          |
>                         | Reg2     |
>                         |__________|
> From the above fantastic drawing you can see an example of how the
> blocks are layed out.  Basically I instantiate two of the VHDL modules
> (included in the 1st post), into the top level.  All of the DATA ports
> are declared as inout.  There is also an address bus (ADDR) that is
> run to all of the blocks in the design that allows data to be
> written/read to/from the different registers.  Basically the design is
> a standard memory mapped i/o interface to a 16-bit micro-controller
> (standard signals RD, WR, EN, ADDR, DATA, etc).  Should I just create
> a MUX and make all of the signals uni-directional, and take care of
> the addressing in both the mux and the individual lower level blocks
> that contain the registers?  Also if this was the case the interface
> to the micro-controller would have to be bi-directioanl at some point.
>  Am i going to run into the same problem again?  thanks for the help
> Mike
> 


Article: 45032
Subject: Re: [FUD msg] Virtex-II PRO Channel alignment not working?
From: Winnie Hsu <Winnie.Hsu@xilinx.com>
Date: Wed, 10 Jul 2002 10:59:36 -0700
Links: << >>  << T >>  << A >>
It looks like a fud message. We have recently
heard fhat there are some fud msg spreading in
the fields too. V2P's RocketIO transceivers are
highly functional. Therefore, if you still have any issue or
question, please contact your FAE and Xilinx Hotline.
Thanks.

-Winnie
------------------------------------------------------------
My posts in this news group represent only personal opinion
------------------------------------------------------------
dano1@attglobal.net wrote:

> Is it true that the multi-channel fifo-allignment for the SERDES is not
> functional in the VII-PRO? Does anyone know what the isue is in detail? Can
> two channels be aligned ?
>
> Thanks,
> Dan


Article: 45033
Subject: Re: DCM - LOCKED output stays high when it shouldn't?
From: Austin Lesea <austin.lesea@xilinx.com>
Date: Wed, 10 Jul 2002 13:13:04 -0700
Links: << >>  << T >>  << A >>
Hakon,

Before Virtex II, one needed to delay the LOCKED signal before releasign the reset of the next
DLL.

This is no longere required in Virtex II, or later parts.  This was a start up from the reset
condition in the cascaded DLL issue.

Austin

Hakon Lislebo wrote:

> Thank you Austin, that was just what I wanted to know. I also am
> curious about one more thing:
>
> When to DCM's or DLL's are cascaded, Xilinx have introduced a SRL16
> shift register between LOCKED on the first DLL to RST on the second.
> Does that mean that the clock coming out from the first DLL is not
> completely OK when its LOCKED output goes high?
>
> Hakon
>
> Austin Lesea <austin.lesea@xilinx.com> wrote in message news:<3D2AF5DB.39F513A@xilinx.com>...
> > Hakon,
> >
> > In the Virtex, Virtex E, Spartan II, and Spartan IIE, LOCKED may
> > occasionally go low due to asynchronous gaps in the input clock, and then
> > go high again.  One has to catch the falling edge of LOCKED to be sure the
> > DLL is not locked.  If the input clock stops altogether, LOCKED stays high
> > (it is a synchronous state machine).
> >
> > This was changed in Virtex II, and Virtex II Pro, so that once low, LOCKED
> > can not go high again until it is RESET.  If the clock in stops, the
> > CLK_IN_STOPPED status bit goes high (LOCKED will stay high as in the
> > previous families).  If the CLKFX stops, the CLKFX_STOPPED status bit goes
> > high until reset (and again, LOCKED stays high).
> >
> > So a healthy DCM = LOCKED AND NOT(CLK_IN_STOPPED OR CLKFX_STOPPED).
> >
> > Austin
> >
> > Hakon Lislebo wrote:
> >
> > > Hi, I mean that I have read that the Xilinx DCM - LOCKED output stays,
> > > or goes high again after the DCM has lost lock. Is that correct? Does
> > > anybody have a link to some documentation?
> > >
> > > Thank you
> > > Regards
> > > Hakon Lislebo


Article: 45034
Subject: Re: LUT and Xilinx Distributed SelectRam
From: koijnm2002@yahoo.com (Antony)
Date: 10 Jul 2002 13:14:51 -0700
Links: << >>  << T >>  << A >>
Thank you for your input. 

What did you mean by IIRC? What does it stand for?


John_H <johnhandwork@mail.com> wrote in message news:<3D2B225E.A37A684A@mail.com>...
> You have the right primitive, indeed.
> 
> If you have a good synthesizer, you can infer the lookup as well.
> Synplify has been doing the distributed dual-ports for me nicely (as long
> as I define a write enable), even duplicating when I need more than one
> read channel (a tri-port?).
> 
> IIRC, the Xilinx data sheets do a good job of illustrating the timing for
> the read-write violation.
> 
> 
> Antony wrote:
> 
> > Hello,
> >
> > I'm trying to implement a LUT (16 deep, 8 bits wide), which should be
> > able to be programmed its content while the data is been read. I know
> > that I can't read data from a location while I'm writing to the same
> > location - this could be a memory read-write violation.
> >
> > Obviously, using two of them and muxing the read and write is the
> > easiest option. I'm trying to find out if there are any other ways of
> > doing this. I'm wondering if the use of Distributed SelectRam
> > (RAM16X1D) could help me.
> >
> > Any suggestions are greatly appreciated.
> >
> > Antony.

Article: 45035
Subject: Re: how to keep info. in RAM during reconfiguration?
From: Rick Filipkiewicz <rick@algor.co.uk>
Date: Wed, 10 Jul 2002 21:23:23 +0100
Links: << >>  << T >>  << A >>


Jeff Mock wrote:

> If you want to keep SDRAM contents across reconfiguration for debug
> purposes on the bench I think this will work okay, but it the
> product's operation depends on it I don't think this will work.
>
> The SDRAM needs to have all of its rows refreshed every 64ms, which
> is probably too quick to do a reconfiguration.  If you are doing a
> distributed refresh where you refresh single rows at regular time
> intervals, there will be some row in the SDRAM micro-seconds away
> from needing to be refreshed when reconfig starts.
>
> The refresh spec is very conservative, especially at room temperature,
> so the refresh issue is probably not a problem on the bench, but will
> hurt over temperature and voltage.
>
> jeff
>

To cover all cases it would probably be best to put the SDRAMs into self-refresh mode just before starting the
re-config (do this by performing an auto-refresh command  with CKE = low) then hold CKE low with a pulldown
during re-config.


Article: 45036
Subject: DPLL
From: "Frank Zhifeng Yuan" <zhifengyuan@rogers.com>
Date: Wed, 10 Jul 2002 20:33:08 GMT
Links: << >>  << T >>  << A >>
Hi
I would like to implement a DPLL in FPGA, using VHDL. The input to DPLL is a
2.048MHz clock, and I want output is like: N*64KHz, well N=1 to 31.
Could anybody give me a clue?
Any comments is appreciated.

Frank



Article: 45037
Subject: Re: XST and Bidirectional I/O ports
From: Kevin Brace <ihatespam99kevinbraceusenet@ihatespam99hotmail.com>
Date: Wed, 10 Jul 2002 15:37:22 -0500
Links: << >>  << T >>  << A >>


Anthony Ellis wrote:
> 
> Hi,
> 
> I am struggling with a post map simulation of a Xilinx design with a
> bidirectional I/O port. The I/O port has an output register, input register
> and tristate control all defined with the IOB attribute. Looking at the map
> results the I/O implementation seems match what I expect. However, the
> mapping processes does issue warnings that IOBUF's are being added and that
> a simulation mismatch may occur - and my testbench does just this.
> 
> Looking at the simprims logic it seems that the I/O port is implemented
> internally to the device as the pullup primitive, input register, output
> register are connected one level in from the actual chip I/O signal. This
> chip I/O signal has an X-BUF and X-TRI buf inserted before the output pin -
> making it now purely an output?
> 
> I can't see why this is as the registered input is used all over (so cannot
> be removed) and the functional simulation works fine.
> 
> Anthony.


        I am not sure what exactly is going on, but my guess will be
that you might have tri-state buffers buried inside a submodule (i.e.,
Tri-state buffers are not on the top module.), and also you are keeping
the design hierarchy during synthesis (i.e., Not flattening the design
hierarchy during synthesis.)
Assuming what I said is the case which I am not sure, what you can do is
you can flatten the design hierarchy during synthesis which will result
in tri-state buffers and associated registers getting "bubbled up" to
the top module which will get automatically converted to IOBUF or OBUFT
by XST.
The only problem of flattening design hierarchy during synthesis in XST
is that, if you have blackboxes in your design (i.e., Mixed language
design or using IP cores supplied in a netlist format.), XST will likely
mess up the synthesis (I have observed valid FFs getting mysteriously
disappearing from the netlist generated.).
In case you cannot flatten the design hierarchy because you are using IP
cores that requires you to keep the design hierarchy or to avoid the
fatal bug of XST I just mentioned, all you can do is to instantiate I/O
pad library primitives like OBUFT or IOBUF in your code.
If the design hierarchy is not flattened during synthesis in XST, XST
cannot seem to "bubble up" regular tri-state buffers (i.e., In Verilog
"assign My_Signal = My_Signal_OE ? 1'bz : My_Signal_Output;") unless you
use OBUFT or IOBUF.
Xilinx seems to have been aware of this problem of XST, but has done
nothing for years . . .
        Another thing you may want to try before simulating your design
will be to take a look at the netlist generated by XST.
There you should be able to see if XST is indeed inferring IOBUFs.
(Synthesis report will also mention it, too.)
If you are using ISE 3.x's XST, you should have no problem reading the
EDIF netlist.
However, if you are using ISE 4.x's XST, Xilinx will tell (lie to) you
that all XST can do is it can only generate an encrypted netlist (.NGC)
and not an EDIF netlist.
I posted a posting in this newsgroup a few months ago that ISE 4.x's XST
can actually generate an EDIF netlist.


http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&threadm=aceeac%249fj%241%40newsreader.mailgate.org&rnum=1&prev=/groups%3Fq%3DKevin%2BBrace%2BXST%2BEDIF%26hl%3Den%26lr%3D%26ie%3DUTF-8%26selm%3Daceeac%25249fj%25241%2540newsreader.mailgate.org%26rnum%3D1



Kevin Brace (In general, don't respond to me directly, and respond
within the newsgroup.)

Article: 45038
Subject: FPGA/CPLD Decision help?
From: Daniel <Daniel.Westerheim@Lynntech.com>
Date: Wed, 10 Jul 2002 13:37:23 -0700
Links: << >>  << T >>  << A >>
I am new to the world of PLDs and FPGAs and need advice on choosing a device and developement kit.

My application will be in a portable device and therefore needs to be as low power as possible and small (BGA probably).  Xilinx has an application note (#154, #155) where they put an ADC and an DAC in their Virtex FPGA.  This would be a highly desirable feature in any device recommended.

Another major feature I need is that our data is fed into a Nueral Network currently in MatLab.  MatLab can export the algorithm for the ANN in C code, which i would then like to use in the FPGA.  I think this would be done by essentially creating a processor on the FPGA (with command architecture) and then compiling the C into assembly and downloading into a Program Memory for the processor?

The data rate for this particular application will probably not be very high, but I would like to use FPGA technology in future projects where speed is critical (ultrasonic measurements, impedence, etc.).  I would like to pay <~$1000 for a developement board.

All of your advice and opinions are welcome.  If you need more info, please email me and I will answer to the best of my ability.

Thanks in advance

Daniel Westerheim
Research Engineer

Article: 45039
Subject: Re: DPLL
From: Ray Andraka <ray@andraka.com>
Date: Wed, 10 Jul 2002 22:13:33 GMT
Links: << >>  << T >>  << A >>
A DPLL is going to need a master clock considerably higher than the highest
output frequency you wish to produce.  In your case, 31*64K is just shy of your
2.048 MHz clock, so it isn't going to work very well.  That said, if you just
want a programmable clock frequency generated from your master clock (one picked
to be at least 10-20x), direct digital synthesis is probably the best way to
go.  That is basically an accumulator that accumulates fractional phase.  The
output frequency is N*Fc/(2^bits) where N is the increment value, bits is the
number of bits in the accumulator and Fc is the master clock frequency.  You do
need to be aware that there is a jitter of up to one cycle of the master clock
on the output depending on the increment value (this is unavoidable if you are
generating a non-integral clock from another and still having the output clock
transition as a result of edges on the input clock).  The AVERAGE frequency is
determined by the above equation and can be resolved to any precision you want
by adding bits to the accumulator.

Frank Zhifeng Yuan wrote:

> Hi
> I would like to implement a DPLL in FPGA, using VHDL. The input to DPLL is a
> 2.048MHz clock, and I want output is like: N*64KHz, well N=1 to 31.
> Could anybody give me a clue?
> Any comments is appreciated.
>
> Frank

--
--Ray Andraka, P.E.
President, the Andraka Consulting Group, Inc.
401/884-7930     Fax 401/884-7950
email ray@andraka.com
http://www.andraka.com

 "They that give up essential liberty to obtain a little
  temporary safety deserve neither liberty nor safety."
                                          -Benjamin Franklin, 1759



Article: 45040
Subject: Re: LUT and Xilinx Distributed SelectRam
From: John_H <johnhandwork@mail.com>
Date: Wed, 10 Jul 2002 22:43:46 GMT
Links: << >>  << T >>  << A >>
IIRC is shorthand for "If I Recall Correctly."
It confused me at first, too, but I see it so much on the newsgroups that I got lazy.

At least I don't use "u" as a word!


Article: 45041
Subject: Re: LUT and Xilinx Distributed SelectRam
From: Peter Alfke <peter@xilinx.com>
Date: Wed, 10 Jul 2002 15:47:37 -0700
Links: << >>  << T >>  << A >>
IIRC = "If I Remember Correctly"
Peter

Antony wrote:

> Thank you for your input.
>
> What did you mean by IIRC? What does it stand for?
>
> John_H <johnhandwork@mail.com> wrote in message news:<3D2B225E.A37A684A@mail.com>...
> > You have the right primitive, indeed.
> >
> > If you have a good synthesizer, you can infer the lookup as well.
> > Synplify has been doing the distributed dual-ports for me nicely (as long
> > as I define a write enable), even duplicating when I need more than one
> > read channel (a tri-port?).
> >
> > IIRC, the Xilinx data sheets do a good job of illustrating the timing for
> > the read-write violation.
> >
> >
> > Antony wrote:
> >
> > > Hello,
> > >
> > > I'm trying to implement a LUT (16 deep, 8 bits wide), which should be
> > > able to be programmed its content while the data is been read. I know
> > > that I can't read data from a location while I'm writing to the same
> > > location - this could be a memory read-write violation.
> > >
> > > Obviously, using two of them and muxing the read and write is the
> > > easiest option. I'm trying to find out if there are any other ways of
> > > doing this. I'm wondering if the use of Distributed SelectRam
> > > (RAM16X1D) could help me.
> > >
> > > Any suggestions are greatly appreciated.
> > >
> > > Antony.


Article: 45042
Subject: Re: DPLL
From: John_H <johnhandwork@mail.com>
Date: Wed, 10 Jul 2002 22:50:33 GMT
Links: << >>  << T >>  << A >>
If you want to produce a Fractional-N interface that's ITU-T compliant, you'll
need to look at the allowable jitter specs and decide if you want a real
external PLL or a fast digital frequency synthesizer like Ray suggested.

If you don't care about compliance, all you need to concern yourself with is how
much jitter can your system tolerate.  If you can tolerate any and all jitter, a
gated clock might be your best approach, grabbing the data from the timeslots as
the timeslots occur.  If you grab 10 of the 32 (effective) channels, you'll
pulse 80 bits out of the 256 bit frame for a 650kHz effective rate.

The question is how smooth do you need it?

The 25MHz minimum frequency for the DLL input might sound annoying, but the
intent is for good digital behavior and not for a good analog PLL.



Frank Zhifeng Yuan wrote:

> Hi
> I would like to implement a DPLL in FPGA, using VHDL. The input to DPLL is a
> 2.048MHz clock, and I want output is like: N*64KHz, well N=1 to 31.
> Could anybody give me a clue?
> Any comments is appreciated.
>
> Frank


Article: 45043
Subject: Re: ModelSim License problem
From: "Rob Finch" <robfinch@sympatico.ca>
Date: Wed, 10 Jul 2002 19:51:57 -0400
Links: << >>  << T >>  << A >>
I think the license file could also be tied to the hard drive serial number.
When I upgraded the hard drive in my machine *poof* modelsim no longer
worked saying I didn't have a valid license file. I tried unistalling and
reinstalling and obtaining a new license file from Xilinx none of which
worked. Eventually I had to put the old drive back in my machine (under a
different drive letter) and change the license search path to include the
old drive. I can at least run ModelSim now, but it complains when I run it
that I only have a 30 day evaluation license. Somehow the license software
knows that things have changed. I've tried looking in the registry for
related entries but could figure out where they were.

I sure would like to know what the procedure is to keep ModelSim working
when you upgrade your hard drive or network adapter.

Rob


"Holger Kleinegraeber" <olgi42@web.de> wrote in message
news:agc97u$kouhe$1@ID-69700.news.dfncis.de...
>
> "Derrick Cheng" schrieb:
>
> > invalid, such that I could not perform the simulation.
> > I got the license file from the Xilinx, and I installed the license
> > successfully with the License program.
>
> The License is bound to the MAC-Address of your Network card. Did you
> registered, downloaded and work with the same computer?
>
> Greetings,
>   Holger
>
>



Article: 45044
Subject: Re: FPGA/CPLD Decision help?
From: "Jim Raynor" <chris_cheung66@hotmail.com>
Date: Thu, 11 Jul 2002 00:40:59 GMT
Links: << >>  << T >>  << A >>
Virtex 2 Pro? they got rocket IO and integrated PowerPC.
or just Virtex and Virtex 2 with MicroBlaze controller



"Daniel" <Daniel.Westerheim@Lynntech.com> wrote in message
news:ee77cd1.-1@WebX.sUN8CHnE...
> I am new to the world of PLDs and FPGAs and need advice on choosing a
device and developement kit.
>
> My application will be in a portable device and therefore needs to be as
low power as possible and small (BGA probably).  Xilinx has an application
note (#154, #155) where they put an ADC and an DAC in their Virtex FPGA.
This would be a highly desirable feature in any device recommended.
>
> Another major feature I need is that our data is fed into a Nueral Network
currently in MatLab.  MatLab can export the algorithm for the ANN in C code,
which i would then like to use in the FPGA.  I think this would be done by
essentially creating a processor on the FPGA (with command architecture) and
then compiling the C into assembly and downloading into a Program Memory for
the processor?
>
> The data rate for this particular application will probably not be very
high, but I would like to use FPGA technology in future projects where speed
is critical (ultrasonic measurements, impedence, etc.).  I would like to pay
<~$1000 for a developement board.
>
> All of your advice and opinions are welcome.  If you need more info,
please email me and I will answer to the best of my ability.
>
> Thanks in advance
>
> Daniel Westerheim
> Research Engineer



Article: 45045
Subject: Re: 32 bit multiplier (1 cycle)
From: "Reala" <manfield.chow@scoreconcept.com>
Date: Thu, 11 Jul 2002 09:07:31 +0800
Links: << >>  << T >>  << A >>
Dear Ray,

Thank you for your help.

Reala


"Ray Andraka" <ray@andraka.com> wrote in message
news:3D2C1A15.DE690DAD@andraka.com...
> If you are using Xilinx VirtexII or Altera Stratix, these devices have
> embedded multipliers which you can instantiate to accomplish this task.
If
> you are using some other device you'll have to construct your own.  The
> compilers, if they, infer a multiply at all (only some do) do not produce
> anything particularly fast.  You have a better shot at getting what you
want
> by using the core generators from the respective vendor to generate a
placed
> multiplier macro.  You can also build your own, in which case I encourage
you
> to visit the multipliers page on my website for a discussion of optimal
> structures for FPGAs.
>
> Reala wrote:
>
> > Dear all,
> >
> > I would like to design a 32 bit multiplier  (16bit X 16bit) for MCU.
> > The multiply operation for MCU is one cycle only.
> > Normally, the multiply operation is about 4 cycles. It is a difficult
task
> > for me.
> > Is there any special method to make a smaller size multiplier with
single
> > cycle do this?
> > Moreover, if i write this by verilog, can the complier take care this
kind
> > of task? or depend on the source file of my design? or must do this by
> > schematic
> > design?
> >
> > Anyone have idea to do this? Thank a lot.
> >
> > Reala
>
> --
> --Ray Andraka, P.E.
> President, the Andraka Consulting Group, Inc.
> 401/884-7930     Fax 401/884-7950
> email ray@andraka.com
> http://www.andraka.com
>
>  "They that give up essential liberty to obtain a little
>   temporary safety deserve neither liberty nor safety."
>                                           -Benjamin Franklin, 1759
>
>



Article: 45046
Subject: Re: how to keep info. in RAM during reconfiguration?
From: jeff@mock.com (Jeff Mock)
Date: 10 Jul 2002 18:41:57 -0700
Links: << >>  << T >>  << A >>
Oh right, self-refresh mode, I didn't think of that.  I 
take it all back, it's probably quite doable if you put
the SDRAMs in self-refresh mode...

Rick Filipkiewicz <rick@algor.co.uk> wrote in message news:<3D2C97BB.6CB15AEC@algor.co.uk>...
> 
> To cover all cases it would probably be best to put the SDRAMs into self-refresh mode just before starting the
> re-config (do this by performing an auto-refresh command  with CKE = low) then hold CKE low with a pulldown
> during re-config.

Article: 45047
Subject: Re: Xilinx adder RLOCs
From: g_ping <gping_bupt@sina.com.cn>
Date: Wed, 10 Jul 2002 18:43:14 -0700
Links: << >>  << T >>  << A >>
I have encountered the same question as Jone_H's.
   I want to know how to instantiate the luts with a vhdl module?

Article: 45048
Subject: Re: Bi-Directional Bus problem in Xilinx FPGA
From: mschreiber75@yahoo.com (M Schreiber)
Date: 10 Jul 2002 18:50:42 -0700
Links: << >>  << T >>  << A >>
Laurent,
   I tried your first solution and it works fine with one of my
blocks, but when I connect them together in a bus orientation, fpga
express cannot figure out the port type (DATA port) for some reason. 
I had access today to another colleague's synthesis tool (Sympilfy)
and I ran one of earlier versions of code through it with good results
( few warnings, but the code seems to run well on the xilinx demo
board).  So I am not sure what the problem is with fpga express, I am
going to keep working at it and see if I can get it to work with FPGA
express.  Thanks again for your assiatence.  I will let you know what
happens.
Thanks,
    Mike

Article: 45049
(removed)




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