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 123700

Article: 123700
Subject: Re: Spartan 3E starter kit (Rev.D) modification : 3E500 -> 3E1200
From: John Adair <g1@enterpoint.co.uk>
Date: Sun, 02 Sep 2007 05:51:34 -0700
Links: << >>  << T >>  << A >>
I would not recommend changing any BGA device unless you have exactly
the right equipment and ideally someone with experience to do it. You
are highly likely to wreck the board otherwise. I am surprised you
can't buy the bigger fitted board in Hungary. We certainly ship our
development board products (including the student priced (UAP)
packages) there without issue and I doubt the US EAR would cause an
issue for Digilent/Xilinx to ship there.

John Adair
Enterpoint Ltd.
www.enterpoint.co.uk

On 30 Aug, 14:14, dormanpet...@gmail.com wrote:
> Hello!
>
> I would like to change the FPGA in this board to a bigger one, but I
> don't know if it's possible.
> I noticed in the datasheet (http://direct.xilinx.com/bvdocs/publications/ds312.pdf
> ) that the 500 and 1200 versions are pin compatible (FG320), so my
> question would be whether it is enough to simple change it out, or I
> have to do something more with it?
> (The 4 Mbit platform flash on the board is enough for configuration;
> but if I would like to have a S3E1600, I would need 8 Mbit p.f.)
> I can see some smd capacitors next to the fpga, quite close... are
> they to survive the soldering process, or will I have to buy new ones,
> and solder them there?



Article: 123701
Subject: Re: PCIe question
From: John Adair <g1@enterpoint.co.uk>
Date: Sun, 02 Sep 2007 06:14:02 -0700
Links: << >>  << T >>  << A >>
The Beacon is one way a wakeup from L2 LTSSM state (deep power save).
Depends on whether your Phy implementation supports this method or
uses the Wake# or even whether the deep power save feature is
supported.

John Adair
Enterpoint Ltd.
www.enterpoint.co.uk

On 30 Aug, 01:49, vasile <picli...@gmail.com> wrote:
> On Aug 29, 5:50 pm, PeteS <axk...@dsl.pipex.com> wrote:
>
>
>
>
>
> > Gabor wrote:
> > > On Aug 29, 2:55 pm, "Charles, NG" <site_blackh...@trellisys.ie> wrote:
> > >> The spec says all _transmitters_ shall be AC coupled. You just lead the
> > >> RX line directly to your component.
>
> > >> In terms of your a) b) c) options, the answer is therefore c) but only
> > >> the TX line(s).
>
> > >> By the way as far as I remember, there is some Intel doc recommending
> > >> placing the cap at 1/3 of the distance from plug to component (i.e.
> > >> closer to the plug than to the component).
>
> > > Also if you're designing a PCIe plug-in card, remember that the signal
> > > names on the connector are based on the motherboard.  So you need to
> > > connect your transmitter to the receive signals (PERP0/PERN0 ...) and
> > > your receiver to the transmit signals (PETP0/PETN0 ...).  Since the Rx
> > > and Tx signals are on the opposite board surface, it is very hard to
> > > correct swapped signals using wires!  I got bit by this on my first
> > > PCIe design.
>
> > It is very important to make sure your coupling capacitor is large
> > enough to handle the 30kHz beacons, so *if* (as I do on occasion) you ac
> > couple at _each end of the link_, make sure you used double the
> > recommended value of capacitor if it's a short (in the transmission line
> > sense) link.
>
> This is new for me. What do you mean with 30KHz beacon at 3.1Gbps ?
> The 0.1uF impedance is large enough for a Ghz signal.- Hide quoted text -
>
> - Show quoted text -



Article: 123702
Subject: Re: PCB Impedance Control
From: hal-usenet@ip-64-139-1-69.sjc.megapath.net (Hal Murray)
Date: Sun, 02 Sep 2007 09:13:36 -0500
Links: << >>  << T >>  << A >>

>>E.g. Take a 6 layer board, layer 2 ground, layer 5 power. If the signal goes 
>>from layer 1 to 6 through a via, you should have a bypass cap bewteen power 
>>and ground near this via.

>That's not necessary. There's already so much plane-plane capacitance
>that the planes are already equipotential as far as the tiny charge
>injected by the signal trace can affect them.

>Really, on a board with, say, 3000 vias, are you going to put a bypass
>via near every signal via? I've heard of people asking for two!

If that was true, would we have a problem crossing plane cuts?

My handwave says the plane cut would be C/4 relative to the via
case.  /2 because the caps for the 2 planes are in series, and
another /2 because each cap is only half the size.

This sounds like something that should be in (one of) Lee Ritchey's
books.  Anybody got the page number handy?

-- 
These are my opinions, not necessarily my employer's.  I hate spam.


Article: 123703
Subject: Re: PCB Impedance Control
From: hal-usenet@ip-64-139-1-69.sjc.megapath.net (Hal Murray)
Date: Sun, 02 Sep 2007 09:47:31 -0500
Links: << >>  << T >>  << A >>

>Clearly putting a bypass cap at every via is impractical, and if you re-read 
>my post, that is not what I suggested. However, I stand by my recommendation 
>that in places where many nets and/or critial nets change reference planes, 
>a bypass capacitor nearby is important. Clearly, a single capacitor, perhaps 
>connected with multiple vias to the planes, can be shared by many signal 
>vias, as it will have a lot more capacitance than, for example, the planes 
>can provide.

Then I should be able to compute/estimate the value of "nearby"
and the size of the cap needed.

-- 
These are my opinions, not necessarily my employer's.  I hate spam.


Article: 123704
Subject: Re: PCB Impedance Control
From: John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com>
Date: Sun, 02 Sep 2007 07:51:18 -0700
Links: << >>  << T >>  << A >>
On Sun, 02 Sep 2007 09:13:36 -0500,
hal-usenet@ip-64-139-1-69.sjc.megapath.net (Hal Murray) wrote:

>
>>>E.g. Take a 6 layer board, layer 2 ground, layer 5 power. If the signal goes 
>>>from layer 1 to 6 through a via, you should have a bypass cap bewteen power 
>>>and ground near this via.
>
>>That's not necessary. There's already so much plane-plane capacitance
>>that the planes are already equipotential as far as the tiny charge
>>injected by the signal trace can affect them.
>
>>Really, on a board with, say, 3000 vias, are you going to put a bypass
>>via near every signal via? I've heard of people asking for two!
>
>If that was true, would we have a problem crossing plane cuts?
>
>My handwave says the plane cut would be C/4 relative to the via
>case.  /2 because the caps for the 2 planes are in series, and
>another /2 because each cap is only half the size.
>
>This sounds like something that should be in (one of) Lee Ritchey's
>books.  Anybody got the page number handy?

I've experimentally TDR tested plane cuts, and they are generally
invisible as long as they are thin as compared to board thickness, or
if the ground plane slit is shorted out by an adjacent power plane.

All this popular "return current" theorizing is madness. There's so
much dielectric shorting a small slit that a signal trace cruises over
it and never sees it.

Spend s few minutes with a hunk of copperclad, some edge-launch SMAs,
an xacto knife, and a 20 GHz TDR scope. It's enlightening. The other
fun thing to do is to add some "classicly bad" trace/slit/via
structures into spare bits of production boards and TDR them.

John


Article: 123705
Subject: Re: PCB Impedance Control
From: John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com>
Date: Sun, 02 Sep 2007 08:27:28 -0700
Links: << >>  << T >>  << A >>
On Sun, 2 Sep 2007 13:15:25 +0100, "Symon" <symon_brewer@hotmail.com>
wrote:

>"John Larkin" <jjlarkin@highNOTlandTHIStechnologyPART.com> wrote in message 
>news:oduid31vs6ln11b62visqug6ql7rostl1f@4ax.com...
>>>
>>>Hi Jon,
>>>Yes. But with a caveat. When your signals switch reference layers, make 
>>>sure
>>>there is a path for the reference current.
>>>
>>>E.g. Take a 6 layer board, layer 2 ground, layer 5 power. If the signal 
>>>goes
>>>from layer 1 to 6 through a via, you should have a bypass cap bewteen 
>>>power
>>>and ground near this via.
>>
>>
>> That's not necessary. There's already so much plane-plane capacitance
>> that the planes are already equipotential as far as the tiny charge
>> injected by the signal trace can affect them.
>>
>> Really, on a board with, say, 3000 vias, are you going to put a bypass
>> via near every signal via? I've heard of people asking for two!
>>
>> John
>>
>Hi John,
>I wish that was always the case! There are problems relying solely on the 
>interplane capacitance. There will be an impedance discontinuity at the via 
>no matter what, but using solely the interplane capacitance increases this 
>discontinuity. Clearly the inductance of the signal in this case is higher. 
>Also, if a bus does the transistion, all the even mode effects add up. 
>Finally, the high Q of the planes means you are vulnerable to plane 
>resonances.
>
>http://www.sigrity.com/papers/epep2000/QC-JZ-EPEP2000-Final.pdf

Wow, that's about as incoherent as papers get!


>http://www.hottconsultants.com/techtips/pcb-stack-up-6.html


Incredible, dangerous nonsense. Absolutely moronic. Quote:

"Referencing the Top and Bottom of the Same Plane.  Whenever a signal
switches layers and references first the top and then the bottom of
the same plane we must still ask the question, how does the return
current get from the top to the bottom of the plane.  Do to the "skin
effect" the current cannot flow through the plane, it can only flow on
the surface of the plane.

This is some sort of joke, right?



http://dspace.kaist.ac.kr/bitstream/10203/664/1/effectof.pdf


That last one is academic and inconclusive, and the board he uses is
not at all realistic.

Except in extreme situations, it's safe to assume that parallel planes
in a multilayer pcb, bypassed with scattered caps, is an equipotential
structure. It's that simple.


John



Article: 123706
Subject: V5 Configuration via SPI
From: Sean Durkin <news_sep07@durkin.de>
Date: Sun, 02 Sep 2007 17:58:27 +0200
Links: << >>  << T >>  << A >>
Hi *,

on one of our next boards, I'd like to use the Virtex5 feature to have
it program itself from an external SPI flash. In that case, the FPGA
will provide the SPI clock via the dedicated CCLK pin.

What happens to the CCLK pin after configuration is done? Will it go to
tristate or still be an output with permanent '0' or '1'?

The thing is that I want to use the remaining space in the SPI flash
from a microcontroller that is also on the board. The uC then would be
the master to the SPI flash after configuration and would have to drive
the SPI clock, but this only works if CCLK goes to tristate.

There's other ways to do this (like hook up the SPI flash to the uC and
have that load the FPGA and such), but the most "elegant" solution would
be to just connect flash and uC to the SPI and switch masters on the bus
after configuration, if that's possible.

Another "problem" is that I also want to have an SPI slave interface
inside the FPGA, to set up registers and such via the uC. Since I can't
use the CCLK pin as a clock input later on, I'd have to connect the SPI
clock from the uC to another pin on the FPGA. So basically I'd have a
clock trace that goes from uC to SPI flash and then on the FPGA to the
CCLK pin an another clock pin. This line would have to be driven from
the FPGA during configuration and from the uC later on.

Certainly not optimal from a signal integrity point of view, but has
anyone tried this?

cu,
Sean

-- 
My email address is only valid until the end of the month.
Try figuring out what the address is going to be after that...

Article: 123707
Subject: opb_timer interrupt self test problem
From: dormanpeter1@gmail.com
Date: Sun, 02 Sep 2007 18:25:54 -0000
Links: << >>  << T >>  << A >>
Hello there!

I ported the WebServer example from MicroBlaze Development Kit,
Spartan -3E 1600E Edition
to spartan 3e starter kit (revD), it seems to work until I want to
open a webpage on the embedded webserver...
---
I made a new project with the required peripherals, and I added the
input buffer and LCD core to the projects, from the .mhs and .mss
files I made those modifications which is required (and in the .ucf
too).
The TestApp_Mem is OK, but when I run the TestApp_Peripheral, It seems
that the interrupt controller and the timer not work (with
interrupt)...

What do you think, what would be the problem with it?  (I'm a beginner
with not too much experience)

I send the MHS and MSS files:

#
##############################################################################
# Created by Base System Builder Wizard for Xilinx EDK 8.2.02 Build
EDK_Im_Sp2.4
# Fri Aug 31 21:24:07 2007
# Target Board:  Xilinx Spartan-3E Starter Board Rev D
# Family:	 spartan3e
# Device:	 XC3S500e
# Package:	 FG320
# Speed Grade:	 -4
# Processor: Microblaze
# System clock frequency: 66.666667 MHz
# Debug interface: On-Chip HW Debug Module
# Data Cache: 8 KB
# Instruction Cache: 8 KB
# On Chip Memory :   8 KB
# Total Off Chip Memory :  80 MB
# - FLASH_16Mx8 =  16 MB
# - DDR_SDRAM_32Mx16 =  64 MB
#
##############################################################################


 PARAMETER VERSION = 2.1.0


 PORT fpga_0_RS232_DCE_RX_pin = fpga_0_RS232_DCE_RX, DIR = I
 PORT fpga_0_RS232_DCE_TX_pin = fpga_0_RS232_DCE_TX, DIR = O
 PORT fpga_0_LEDs_8Bit_GPIO_d_out_pin = fpga_0_LEDs_8Bit_GPIO_d_out,
DIR = O, VEC = [0:7]
 PORT fpga_0_DIP_Switches_4Bit_GPIO_in_pin =
fpga_0_DIP_Switches_4Bit_GPIO_in, DIR = I, VEC = [0:3]
 PORT fpga_0_FLASH_16Mx8_Mem_OEN_pin = fpga_0_FLASH_16Mx8_Mem_OEN, DIR
= O
 PORT fpga_0_FLASH_16Mx8_Mem_CEN_pin = fpga_0_FLASH_16Mx8_Mem_CEN, DIR
= O, VEC = [0:0]
 PORT fpga_0_FLASH_16Mx8_Mem_WEN_pin = fpga_0_FLASH_16Mx8_Mem_WEN, DIR
= O
 PORT fpga_0_FLASH_16Mx8_emc_ben_gnd_pin = net_gnd, DIR = O
 PORT fpga_0_FLASH_16Mx8_Mem_A_pin = fpga_0_FLASH_16Mx8_Mem_A, DIR =
O, VEC = [8:31]
 PORT fpga_0_FLASH_16Mx8_Mem_DQ_pin = fpga_0_FLASH_16Mx8_Mem_DQ, DIR =
IO, VEC = [0:7]
 PORT fpga_0_DDR_SDRAM_32Mx16_DDR_Clk_pin =
fpga_0_DDR_SDRAM_32Mx16_DDR_Clk, DIR = O
 PORT fpga_0_DDR_SDRAM_32Mx16_DDR_Clkn_pin =
fpga_0_DDR_SDRAM_32Mx16_DDR_Clkn, DIR = O
 PORT fpga_0_DDR_SDRAM_32Mx16_DDR_Addr_pin =
fpga_0_DDR_SDRAM_32Mx16_DDR_Addr, DIR = O, VEC = [0:12]
 PORT fpga_0_DDR_SDRAM_32Mx16_DDR_BankAddr_pin =
fpga_0_DDR_SDRAM_32Mx16_DDR_BankAddr, DIR = O, VEC = [0:1]
 PORT fpga_0_DDR_SDRAM_32Mx16_DDR_CASn_pin =
fpga_0_DDR_SDRAM_32Mx16_DDR_CASn, DIR = O
 PORT fpga_0_DDR_SDRAM_32Mx16_DDR_CKE_pin =
fpga_0_DDR_SDRAM_32Mx16_DDR_CKE, DIR = O
 PORT fpga_0_DDR_SDRAM_32Mx16_DDR_CSn_pin =
fpga_0_DDR_SDRAM_32Mx16_DDR_CSn, DIR = O
 PORT fpga_0_DDR_SDRAM_32Mx16_DDR_RASn_pin =
fpga_0_DDR_SDRAM_32Mx16_DDR_RASn, DIR = O
 PORT fpga_0_DDR_SDRAM_32Mx16_DDR_WEn_pin =
fpga_0_DDR_SDRAM_32Mx16_DDR_WEn, DIR = O
 PORT fpga_0_DDR_SDRAM_32Mx16_DDR_DM_pin =
fpga_0_DDR_SDRAM_32Mx16_DDR_DM, DIR = O, VEC = [0:1]
 PORT fpga_0_DDR_SDRAM_32Mx16_DDR_DQS_pin =
fpga_0_DDR_SDRAM_32Mx16_DDR_DQS, DIR = IO, VEC = [0:1]
 PORT fpga_0_DDR_SDRAM_32Mx16_DDR_DQ_pin =
fpga_0_DDR_SDRAM_32Mx16_DDR_DQ, DIR = IO, VEC = [0:15]
 PORT fpga_0_Ethernet_MAC_PHY_tx_clk_pin =
fpga_0_Ethernet_MAC_PHY_tx_clk, DIR = I
 PORT fpga_0_Ethernet_MAC_PHY_rx_clk_pin =
fpga_0_Ethernet_MAC_PHY_rx_clk, DIR = I
 PORT fpga_0_Ethernet_MAC_PHY_crs_pin = fpga_0_Ethernet_MAC_PHY_crs,
DIR = I
 PORT fpga_0_Ethernet_MAC_PHY_dv_pin = fpga_0_Ethernet_MAC_PHY_dv, DIR
= I
 PORT fpga_0_Ethernet_MAC_PHY_rx_data_pin =
fpga_0_Ethernet_MAC_PHY_rx_data, DIR = I, VEC = [3:0]
 PORT fpga_0_Ethernet_MAC_PHY_col_pin = fpga_0_Ethernet_MAC_PHY_col,
DIR = I
 PORT fpga_0_Ethernet_MAC_PHY_rx_er_pin =
fpga_0_Ethernet_MAC_PHY_rx_er, DIR = I
 PORT fpga_0_Ethernet_MAC_PHY_tx_en_pin =
fpga_0_Ethernet_MAC_PHY_tx_en, DIR = O
 PORT fpga_0_Ethernet_MAC_PHY_tx_data_pin =
fpga_0_Ethernet_MAC_PHY_tx_data, DIR = O, VEC = [3:0]
 PORT fpga_0_Ethernet_MAC_PHY_Mii_clk_pin =
fpga_0_Ethernet_MAC_PHY_Mii_clk, DIR = IO
 PORT fpga_0_Ethernet_MAC_PHY_Mii_data_pin =
fpga_0_Ethernet_MAC_PHY_Mii_data, DIR = IO
 PORT fpga_0_DDR_CLK_FB = ddr_feedback_s, DIR = I, SIGIS = CLK,
CLK_FREQ = 66666667
 PORT sys_clk_pin = dcm_clk_s, DIR = I, SIGIS = CLK, CLK_FREQ =
50000000
 PORT sys_rst_pin = sys_rst_s, DIR = I, RST_POLARITY = 1, SIGIS = RST
 PORT LCD_E_pin = opb_lcd_0_LCD_E, DIR = O
 PORT LCD_RW_pin = opb_lcd_0_LCD_RW, DIR = O
 PORT LCD_RS_pin = opb_lcd_0_LCD_RS, DIR = O
 PORT LCD_DB_pin = opb_lcd_0_LCD_DB, DIR = O, VEC = [3:0]


BEGIN microblaze
 PARAMETER INSTANCE = microblaze_0
 PARAMETER HW_VER = 4.00.b
 PARAMETER C_USE_FPU = 0
 PARAMETER C_DEBUG_ENABLED = 1
 PARAMETER C_NUMBER_OF_PC_BRK = 2
 PARAMETER C_USE_ICACHE = 1
 PARAMETER C_CACHE_BYTE_SIZE = 8192
 PARAMETER C_USE_DCACHE = 1
 PARAMETER C_DCACHE_BYTE_SIZE = 8192
 PARAMETER C_ICACHE_USE_FSL = 1
 PARAMETER C_DCACHE_USE_FSL = 1
 PARAMETER C_ICACHE_BASEADDR = 0x24000000
 PARAMETER C_ICACHE_HIGHADDR = 0x27ffffff
 PARAMETER C_DCACHE_BASEADDR = 0x24000000
 PARAMETER C_DCACHE_HIGHADDR = 0x27ffffff
 BUS_INTERFACE DLMB = dlmb
 BUS_INTERFACE ILMB = ilmb
 BUS_INTERFACE DOPB = mb_opb
 BUS_INTERFACE IOPB = mb_opb
 BUS_INTERFACE IXCL = ixcl
 BUS_INTERFACE DXCL = dxcl
 PORT DBG_CAPTURE = DBG_CAPTURE_s
 PORT DBG_CLK = DBG_CLK_s
 PORT DBG_REG_EN = DBG_REG_EN_s
 PORT DBG_TDI = DBG_TDI_s
 PORT DBG_TDO = DBG_TDO_s
 PORT DBG_UPDATE = DBG_UPDATE_s
 PORT Interrupt = Interrupt
 PORT RESET = microblaze_rst
END

BEGIN opb_v20
 PARAMETER INSTANCE = mb_opb
 PARAMETER HW_VER = 1.10.c
 PARAMETER C_EXT_RESET_HIGH = 1
 PORT SYS_Rst = bus_rst_0
 PORT OPB_Clk = sys_clk_s
END

BEGIN opb_mdm
 PARAMETER INSTANCE = debug_module
 PARAMETER HW_VER = 2.00.a
 PARAMETER C_MB_DBG_PORTS = 1
 PARAMETER C_USE_UART = 1
 PARAMETER C_UART_WIDTH = 8
 PARAMETER C_BASEADDR = 0x41400000
 PARAMETER C_HIGHADDR = 0x4140ffff
 BUS_INTERFACE SOPB = mb_opb
 PORT DBG_CAPTURE_0 = DBG_CAPTURE_s
 PORT DBG_CLK_0 = DBG_CLK_s
 PORT DBG_REG_EN_0 = DBG_REG_EN_s
 PORT DBG_TDI_0 = DBG_TDI_s
 PORT DBG_TDO_0 = DBG_TDO_s
 PORT DBG_UPDATE_0 = DBG_UPDATE_s
 PORT OPB_Rst = periph_rst_0
 PORT Debug_SYS_Rst = Debug_SYS_Rst
 PORT Debug_Rst = Debug_Rst
 PORT OPB_Clk = sys_clk_s
END

BEGIN lmb_v10
 PARAMETER INSTANCE = ilmb
 PARAMETER HW_VER = 1.00.a
 PARAMETER C_EXT_RESET_HIGH = 1
 PORT SYS_Rst = bus_rst_1
 PORT LMB_Clk = sys_clk_s
END

BEGIN lmb_v10
 PARAMETER INSTANCE = dlmb
 PARAMETER HW_VER = 1.00.a
 PARAMETER C_EXT_RESET_HIGH = 1
 PORT SYS_Rst = bus_rst_2
 PORT LMB_Clk = sys_clk_s
END

BEGIN lmb_bram_if_cntlr
 PARAMETER INSTANCE = dlmb_cntlr
 PARAMETER HW_VER = 1.00.b
 PARAMETER C_BASEADDR = 0x00000000
 PARAMETER C_HIGHADDR = 0x00001fff
 BUS_INTERFACE SLMB = dlmb
 BUS_INTERFACE BRAM_PORT = dlmb_port
 PORT LMB_Rst = periph_rst_1
END

BEGIN lmb_bram_if_cntlr
 PARAMETER INSTANCE = ilmb_cntlr
 PARAMETER HW_VER = 1.00.b
 PARAMETER C_BASEADDR = 0x00000000
 PARAMETER C_HIGHADDR = 0x00001fff
 BUS_INTERFACE SLMB = ilmb
 BUS_INTERFACE BRAM_PORT = ilmb_port
 PORT LMB_Rst = periph_rst_2
END

BEGIN bram_block
 PARAMETER INSTANCE = lmb_bram
 PARAMETER HW_VER = 1.00.a
 BUS_INTERFACE PORTA = ilmb_port
 BUS_INTERFACE PORTB = dlmb_port
 PORT BRAM_Rst_A = periph_rst_3
 PORT BRAM_Rst_B = periph_rst_4
END

BEGIN opb_uartlite
 PARAMETER INSTANCE = RS232_DCE
 PARAMETER HW_VER = 1.00.b
 PARAMETER C_BAUDRATE = 115200
 PARAMETER C_DATA_BITS = 8
 PARAMETER C_ODD_PARITY = 0
 PARAMETER C_USE_PARITY = 0
 PARAMETER C_CLK_FREQ = 66666667
 PARAMETER C_BASEADDR = 0x40600000
 PARAMETER C_HIGHADDR = 0x4060ffff
 BUS_INTERFACE SOPB = mb_opb
 PORT Interrupt = RS232_DCE_Interrupt
 PORT RX = fpga_0_RS232_DCE_RX
 PORT TX = fpga_0_RS232_DCE_TX
 PORT OPB_Rst = periph_rst_5
 PORT OPB_Clk = sys_clk_s
END

BEGIN opb_gpio
 PARAMETER INSTANCE = LEDs_8Bit
 PARAMETER HW_VER = 3.01.b
 PARAMETER C_GPIO_WIDTH = 8
 PARAMETER C_IS_DUAL = 0
 PARAMETER C_IS_BIDIR = 0
 PARAMETER C_ALL_INPUTS = 0
 PARAMETER C_BASEADDR = 0x40000000
 PARAMETER C_HIGHADDR = 0x4000ffff
 BUS_INTERFACE SOPB = mb_opb
 PORT GPIO_d_out = fpga_0_LEDs_8Bit_GPIO_d_out
 PORT OPB_Clk = sys_clk_s
 PORT OPB_Rst = periph_rst_6
END

BEGIN opb_gpio
 PARAMETER INSTANCE = DIP_Switches_4Bit
 PARAMETER HW_VER = 3.01.b
 PARAMETER C_GPIO_WIDTH = 4
 PARAMETER C_IS_DUAL = 0
 PARAMETER C_IS_BIDIR = 0
 PARAMETER C_ALL_INPUTS = 1
 PARAMETER C_BASEADDR = 0x40020000
 PARAMETER C_HIGHADDR = 0x4002ffff
 BUS_INTERFACE SOPB = mb_opb
 PORT GPIO_in = fpga_0_DIP_Switches_4Bit_GPIO_in
 PORT OPB_Clk = sys_clk_s
 PORT OPB_Rst = periph_rst_7
END

BEGIN opb_emc
 PARAMETER INSTANCE = FLASH_16Mx8
 PARAMETER HW_VER = 2.00.a
 PARAMETER C_OPB_CLK_PERIOD_PS = 14999
 PARAMETER C_NUM_BANKS_MEM = 1
 PARAMETER C_MAX_MEM_WIDTH = 8
 PARAMETER C_MEM0_WIDTH = 8
 PARAMETER C_INCLUDE_DATAWIDTH_MATCHING_0 = 1
 PARAMETER C_SYNCH_MEM_0 = 0
 PARAMETER C_TCEDV_PS_MEM_0 = 110000
 PARAMETER C_TWC_PS_MEM_0 = 110000
 PARAMETER C_TAVDV_PS_MEM_0 = 110000
 PARAMETER C_TWP_PS_MEM_0 = 70000
 PARAMETER C_THZCE_PS_MEM_0 = 35000
 PARAMETER C_TLZWE_PS_MEM_0 = 15000
 PARAMETER C_MEM0_BASEADDR = 0x22000000
 PARAMETER C_MEM0_HIGHADDR = 0x22ffffff
 BUS_INTERFACE SOPB = mb_opb
 PORT Mem_A = fpga_0_FLASH_16Mx8_Mem_A_split
 PORT Mem_DQ = fpga_0_FLASH_16Mx8_Mem_DQ
 PORT Mem_OEN = fpga_0_FLASH_16Mx8_Mem_OEN
 PORT Mem_WEN = fpga_0_FLASH_16Mx8_Mem_WEN
 PORT Mem_CEN = fpga_0_FLASH_16Mx8_Mem_CEN
 PORT OPB_Clk = sys_clk_s
 PORT OPB_Rst = periph_rst_8
END

BEGIN mch_opb_ddr
 PARAMETER INSTANCE = DDR_SDRAM_32Mx16
 PARAMETER HW_VER = 1.00.c
 PARAMETER C_INCLUDE_OPB_BURST_SUPPORT = 0
 PARAMETER C_MCH_OPB_CLK_PERIOD_PS = 14999
 PARAMETER C_REG_DIMM = 0
 PARAMETER C_DDR_TMRD = 15000
 PARAMETER C_DDR_TWR = 15000
 PARAMETER C_DDR_TWTR = 1
 PARAMETER C_DDR_TRAS = 40000
 PARAMETER C_DDR_TRC = 65000
 PARAMETER C_DDR_TRFC = 75000
 PARAMETER C_DDR_TRCD = 20000
 PARAMETER C_DDR_TRRD = 15000
 PARAMETER C_DDR_TRP = 20000
 PARAMETER C_DDR_TREFI = 7800000
 PARAMETER C_DDR_DWIDTH = 16
 PARAMETER C_DDR_AWIDTH = 13
 PARAMETER C_DDR_COL_AWIDTH = 10
 PARAMETER C_MCH0_ACCESSBUF_DEPTH = 16
 PARAMETER C_MCH0_RDDATABUF_DEPTH = 0
 PARAMETER C_XCL0_LINESIZE = 4
 PARAMETER C_XCL0_WRITEXFER = 0
 PARAMETER C_MCH1_ACCESSBUF_DEPTH = 16
 PARAMETER C_MCH1_RDDATABUF_DEPTH = 0
 PARAMETER C_XCL1_LINESIZE = 4
 PARAMETER C_XCL1_WRITEXFER = 1
 PARAMETER C_DDR_BANK_AWIDTH = 2
 PARAMETER C_DDR_ASYNC_SUPPORT = 1
 PARAMETER C_NUM_CLK_PAIRS = 1
 PARAMETER C_MEM0_BASEADDR = 0x24000000
 PARAMETER C_MEM0_HIGHADDR = 0x27ffffff
 BUS_INTERFACE SOPB = mb_opb
 BUS_INTERFACE MCH0 = ixcl
 BUS_INTERFACE MCH1 = dxcl
 PORT DDR_Clk = fpga_0_DDR_SDRAM_32Mx16_DDR_Clk
 PORT DDR_Clkn = fpga_0_DDR_SDRAM_32Mx16_DDR_Clkn
 PORT DDR_Addr = fpga_0_DDR_SDRAM_32Mx16_DDR_Addr
 PORT DDR_BankAddr = fpga_0_DDR_SDRAM_32Mx16_DDR_BankAddr
 PORT DDR_CASn = fpga_0_DDR_SDRAM_32Mx16_DDR_CASn
 PORT DDR_CKE = fpga_0_DDR_SDRAM_32Mx16_DDR_CKE
 PORT DDR_CSn = fpga_0_DDR_SDRAM_32Mx16_DDR_CSn
 PORT DDR_RASn = fpga_0_DDR_SDRAM_32Mx16_DDR_RASn
 PORT DDR_WEn = fpga_0_DDR_SDRAM_32Mx16_DDR_WEn
 PORT DDR_DM = fpga_0_DDR_SDRAM_32Mx16_DDR_DM
 PORT DDR_DQS = fpga_0_DDR_SDRAM_32Mx16_DDR_DQS
 PORT DDR_DQ = fpga_0_DDR_SDRAM_32Mx16_DDR_DQ
 PORT Device_Clk90_in = clk_90_s
 PORT Device_Clk90_in_n = clk_90_n_s
 PORT Device_Clk = sys_clk_s
 PORT Device_Clk_n = sys_clk_n_s
 PORT DDR_Clk90_in = ddr_clk_90_s
 PORT DDR_Clk90_in_n = ddr_clk_90_n_s
 PORT MCH_OPB_Rst = periph_rst_9
END

BEGIN opb_ethernet
 PARAMETER INSTANCE = Ethernet_MAC
 PARAMETER HW_VER = 1.04.a
 PARAMETER C_DMA_PRESENT = 1
 PARAMETER C_IPIF_RDFIFO_DEPTH = 32768
 PARAMETER C_IPIF_WRFIFO_DEPTH = 32768
 PARAMETER C_OPB_CLK_PERIOD_PS = 14999
 PARAMETER C_BASEADDR = 0x40c00000
 PARAMETER C_HIGHADDR = 0x40c0ffff
 BUS_INTERFACE SOPB = mb_opb
 PORT IP2INTC_Irpt = Ethernet_MAC_IP2INTC_Irpt
 PORT PHY_tx_clk = fpga_0_Ethernet_MAC_PHY_tx_clk_O
 PORT PHY_rx_clk = fpga_0_Ethernet_MAC_PHY_rx_clk_O
 PORT PHY_crs = fpga_0_Ethernet_MAC_PHY_crs
 PORT PHY_dv = fpga_0_Ethernet_MAC_PHY_dv
 PORT PHY_rx_data = fpga_0_Ethernet_MAC_PHY_rx_data
 PORT PHY_col = fpga_0_Ethernet_MAC_PHY_col
 PORT PHY_rx_er = fpga_0_Ethernet_MAC_PHY_rx_er
 PORT PHY_tx_en = fpga_0_Ethernet_MAC_PHY_tx_en
 PORT PHY_tx_data = fpga_0_Ethernet_MAC_PHY_tx_data
 PORT PHY_Mii_clk = fpga_0_Ethernet_MAC_PHY_Mii_clk
 PORT PHY_Mii_data = fpga_0_Ethernet_MAC_PHY_Mii_data
 PORT OPB_Clk = sys_clk_s
 PORT OPB_Rst = periph_rst_10
END

BEGIN opb_timer
 PARAMETER INSTANCE = opb_timer_1
 PARAMETER HW_VER = 1.00.b
 PARAMETER C_COUNT_WIDTH = 32
 PARAMETER C_ONE_TIMER_ONLY = 1
 PARAMETER C_BASEADDR = 0x41c00000
 PARAMETER C_HIGHADDR = 0x41c0ffff
 BUS_INTERFACE SOPB = mb_opb
 PORT Interrupt = opb_timer_1_Interrupt
 PORT OPB_Clk = sys_clk_s
 PORT OPB_Rst = periph_rst_12
END

BEGIN opb_intc
 PARAMETER INSTANCE = opb_intc_0
 PARAMETER HW_VER = 1.00.c
 PARAMETER C_BASEADDR = 0x41200000
 PARAMETER C_HIGHADDR = 0x4120ffff
 PARAMETER C_NUM_INTR_INPUTS = 2
 BUS_INTERFACE SOPB = mb_opb
 PORT Irq = Interrupt
 PORT Intr = RS232_DCE_Interrupt & Ethernet_MAC_IP2INTC_Irpt &
opb_timer_1_Interrupt
 PORT OPB_Rst = periph_rst_13
END

BEGIN util_bus_split
 PARAMETER INSTANCE = FLASH_16Mx8_util_bus_split_1
 PARAMETER HW_VER = 1.00.a
 PARAMETER C_SIZE_IN = 32
 PARAMETER C_LEFT_POS = 0
 PARAMETER C_SPLIT = 8
 PORT Sig = fpga_0_FLASH_16Mx8_Mem_A_split
 PORT Out2 = fpga_0_FLASH_16Mx8_Mem_A
END

BEGIN util_vector_logic
 PARAMETER INSTANCE = sysclk_inv
 PARAMETER HW_VER = 1.00.a
 PARAMETER C_SIZE = 1
 PARAMETER C_OPERATION = not
 PORT Op1 = sys_clk_s
 PORT Res = sys_clk_n_s
END

BEGIN util_vector_logic
 PARAMETER INSTANCE = clk90_inv
 PARAMETER HW_VER = 1.00.a
 PARAMETER C_SIZE = 1
 PARAMETER C_OPERATION = not
 PORT Op1 = clk_90_s
 PORT Res = clk_90_n_s
END

BEGIN util_vector_logic
 PARAMETER INSTANCE = ddr_clk90_inv
 PARAMETER HW_VER = 1.00.a
 PARAMETER C_SIZE = 1
 PARAMETER C_OPERATION = not
 PORT Op1 = ddr_clk_90_s
 PORT Res = ddr_clk_90_n_s
END

BEGIN dcm_module
 PARAMETER INSTANCE = dcm_0
 PARAMETER HW_VER = 1.00.a
 PARAMETER C_CLK0_BUF = TRUE
 PARAMETER C_CLKFX_BUF = TRUE
 PARAMETER C_CLKFX_DIVIDE = 3
 PARAMETER C_CLKFX_MULTIPLY = 4
 PARAMETER C_CLKIN_PERIOD = 20.000000
 PARAMETER C_CLK_FEEDBACK = 1X
 PARAMETER C_EXT_RESET_HIGH = 1
 PORT CLKIN = dcm_clk_s
 PORT CLKFX = sys_clk_s
 PORT CLK0 = dcm_0_FB
 PORT CLKFB = dcm_0_FB
 PORT RST = net_gnd
 PORT LOCKED = dcm_0_lock
END

BEGIN dcm_module
 PARAMETER INSTANCE = dcm_1
 PARAMETER HW_VER = 1.00.a
 PARAMETER C_CLK0_BUF = TRUE
 PARAMETER C_CLK90_BUF = TRUE
 PARAMETER C_CLKIN_PERIOD = 15.000000
 PARAMETER C_CLK_FEEDBACK = 1X
 PARAMETER C_EXT_RESET_HIGH = 0
 PORT CLKIN = sys_clk_s
 PORT CLK90 = clk_90_s
 PORT CLK0 = dcm_1_FB
 PORT CLKFB = dcm_1_FB
 PORT RST = dcm_0_lock
 PORT LOCKED = dcm_1_lock
END

BEGIN dcm_module
 PARAMETER INSTANCE = dcm_2
 PARAMETER HW_VER = 1.00.a
 PARAMETER C_CLK0_BUF = TRUE
 PARAMETER C_CLK90_BUF = TRUE
 PARAMETER C_CLKIN_PERIOD = 15.000000
 PARAMETER C_CLK_FEEDBACK = 1X
 PARAMETER C_EXT_RESET_HIGH = 0
 PORT CLKIN = ddr_feedback_s
 PORT CLK90 = ddr_clk_90_s
 PORT CLK0 = dcm_2_FB
 PORT CLKFB = dcm_2_FB
 PORT RST = dcm_1_lock
 PORT LOCKED = dcm_2_lock
END

BEGIN proc_sys_reset
 PARAMETER INSTANCE = proc_sys_reset_0
 PARAMETER HW_VER = 1.00.a
 PARAMETER C_EXT_RESET_HIGH = 1
 PARAMETER C_NUM_BUS_RST = 3
 PARAMETER C_NUM_PERP_RST = 14
 PORT Dcm_locked = dcm_2_lock
 PORT Bus_Struct_Reset = bus_rst_0 & bus_rst_1 & bus_rst_2
 PORT Peripheral_Reset = periph_rst_0 & periph_rst_1 & periph_rst_2 &
periph_rst_3 & periph_rst_4 & periph_rst_5 & periph_rst_6 &
periph_rst_7  & periph_rst_8 & periph_rst_9  & periph_rst_10 &
periph_rst_11 & periph_rst_12  & periph_rst_13
 PORT Slowest_sync_clk = sys_clk_s
 PORT Ext_Reset_In = sys_rst_s
 PORT Aux_Reset_In = net_gnd
 PORT Core_Reset_Req = Debug_Rst
 PORT Chip_Reset_Req = net_gnd
 PORT System_Reset_Req = Debug_SYS_Rst
 PORT Rstc405resetcore = microblaze_rst
END

BEGIN input_buf
 PARAMETER INSTANCE = in_buf0
 PARAMETER HW_VER = 1.00.a
 PARAMETER DWIDTH = 2
 PORT I = fpga_0_Ethernet_MAC_PHY_tx_clk &
fpga_0_Ethernet_MAC_PHY_rx_clk
 PORT O = fpga_0_Ethernet_MAC_PHY_tx_clk_O &
fpga_0_Ethernet_MAC_PHY_rx_clk_O
END

BEGIN opb_lcd
 PARAMETER INSTANCE = char_lcd
 PARAMETER HW_VER = 1.00.c
 PARAMETER C_BASEADDR = 0x73a00000
 PARAMETER C_HIGHADDR = 0x73a0ffff
 BUS_INTERFACE SOPB = mb_opb
 PORT LCD_E = opb_lcd_0_LCD_E
 PORT LCD_RW = opb_lcd_0_LCD_RW
 PORT LCD_RS = opb_lcd_0_LCD_RS
 PORT LCD_DB = opb_lcd_0_LCD_DB
 PORT OPB_Clk = sys_clk_s
 PORT OPB_Rst = periph_rst_11
END

----------------------------------------------------------------------------------------------------------------------------------
system.mss:




 PARAMETER VERSION = 2.2.0


BEGIN OS
 PARAMETER OS_NAME = xilkernel
 PARAMETER OS_VER = 3.00.a
 PARAMETER PROC_INSTANCE = microblaze_0
 PARAMETER sysintc_spec = opb_intc_0
 PARAMETER stdout = RS232_DCE
 PARAMETER stdin = RS232_DCE
 PARAMETER config_debug_support = true
 PARAMETER config_sema = true
 PARAMETER max_sem_waitq = 100
 PARAMETER max_sem = 25
 PARAMETER config_time = true
 PARAMETER max_tmrs = 100
 PARAMETER systmr_freq = 66666667
 PARAMETER systmr_dev = opb_timer_1
 PARAMETER max_readyq = 100
 PARAMETER pthread_stack_size = 16384
 PARAMETER max_pthreads = 100
 PARAMETER static_pthread_table = ((serverThread,1))
END


BEGIN PROCESSOR
 PARAMETER DRIVER_NAME = cpu
 PARAMETER DRIVER_VER = 1.01.a
 PARAMETER HW_INSTANCE = microblaze_0
 PARAMETER COMPILER = mb-gcc
 PARAMETER ARCHIVER = mb-ar
 PARAMETER XMDSTUB_PERIPHERAL = debug_module
 PARAMETER CORE_CLOCK_FREQ_HZ = 50000000
END


BEGIN DRIVER
 PARAMETER DRIVER_NAME = opbarb
 PARAMETER DRIVER_VER = 1.02.a
 PARAMETER HW_INSTANCE = mb_opb
END

BEGIN DRIVER
 PARAMETER DRIVER_NAME = uartlite
 PARAMETER DRIVER_VER = 1.01.a
 PARAMETER HW_INSTANCE = debug_module
END

BEGIN DRIVER
 PARAMETER DRIVER_NAME = bram
 PARAMETER DRIVER_VER = 1.00.a
 PARAMETER HW_INSTANCE = dlmb_cntlr
END

BEGIN DRIVER
 PARAMETER DRIVER_NAME = bram
 PARAMETER DRIVER_VER = 1.00.a
 PARAMETER HW_INSTANCE = ilmb_cntlr
END

BEGIN DRIVER
 PARAMETER DRIVER_NAME = uartlite
 PARAMETER DRIVER_VER = 1.01.a
 PARAMETER HW_INSTANCE = RS232_DCE
END

BEGIN DRIVER
 PARAMETER DRIVER_NAME = gpio
 PARAMETER DRIVER_VER = 2.01.a
 PARAMETER HW_INSTANCE = LEDs_8Bit
END

BEGIN DRIVER
 PARAMETER DRIVER_NAME = gpio
 PARAMETER DRIVER_VER = 2.01.a
 PARAMETER HW_INSTANCE = DIP_Switches_4Bit
END

BEGIN DRIVER
 PARAMETER DRIVER_NAME = emc
 PARAMETER DRIVER_VER = 2.00.a
 PARAMETER HW_INSTANCE = FLASH_16Mx8
END

BEGIN DRIVER
 PARAMETER DRIVER_NAME = sdram
 PARAMETER DRIVER_VER = 1.00.a
 PARAMETER HW_INSTANCE = DDR_SDRAM_32Mx16
END

BEGIN DRIVER
 PARAMETER DRIVER_NAME = emac
 PARAMETER DRIVER_VER = 1.01.a
 PARAMETER HW_INSTANCE = Ethernet_MAC
END

BEGIN DRIVER
 PARAMETER DRIVER_NAME = tmrctr
 PARAMETER DRIVER_VER = 1.00.b
 PARAMETER HW_INSTANCE = opb_timer_1
END

BEGIN DRIVER
 PARAMETER DRIVER_NAME = intc
 PARAMETER DRIVER_VER = 1.00.c
 PARAMETER HW_INSTANCE = opb_intc_0
END

BEGIN DRIVER
 PARAMETER DRIVER_NAME = generic
 PARAMETER DRIVER_VER = 1.00.a
 PARAMETER HW_INSTANCE = in_buf0
END

BEGIN DRIVER
 PARAMETER DRIVER_NAME = generic
 PARAMETER DRIVER_VER = 1.00.a
 PARAMETER HW_INSTANCE = char_lcd
END


BEGIN LIBRARY
 PARAMETER LIBRARY_NAME = xilmfs
 PARAMETER LIBRARY_VER = 1.00.a
 PARAMETER PROC_INSTANCE = microblaze_0
 PARAMETER need_utils = true
 PARAMETER init_type = MFSINIT_IMAGE
 PARAMETER base_address = 0x25000000
 PARAMETER numbytes = 319200
END

BEGIN LIBRARY
 PARAMETER LIBRARY_NAME = lwip
 PARAMETER LIBRARY_VER = 2.00.a
 PARAMETER PROC_INSTANCE = microblaze_0
 PARAMETER api_mode = SOCKETS_API
 PARAMETER memp_num_sys_timeout = 5
 PARAMETER memp_num_tcp_seg = 510
 PARAMETER mem_size = 65538
 PARAMETER emac_instances = ((Ethernet_MAC,
0x01,0x02,0x03,0x04,0x05,0x06))
END


Article: 123708
Subject: Re: Null statement in VHDL
From: Jonathan Bromley <jonathan.bromley@MYCOMPANY.com>
Date: Sun, 02 Sep 2007 22:56:42 +0100
Links: << >>  << T >>  << A >>
On Tue, 28 Aug 2007 14:26:59 -0000, "comp.arch.fpga"
<ksulimma@googlemail.com> wrote:


>> E.g. Jonathan Bromley posted on 2007 March 5th:
>Hmm. I just have to counter that post here.
>
>> [..] The majority of
>> hardware platforms do not offer reliable power-up
>> initialisation of internal state.
>True. But the vast majority of design starts are on platforms that do
>support it.

I have spoken with forked tongue....

You may recall that a while ago I had a dispute about this 
with Rob Dekker of Verific (a software company whose prime
product is an HDL front-end, used by many vendors of synthesis,
formal and linting tools): see the thread

 Coding style, wait statement, sensitivity list and synthesis.

in comp.lang.vhdl around January 2006.  I tried there to
argue that synthesis front-ends should support any construct
that maps to physically realisable hardware, and the back-end 
(mapper) should error-out if the specific target does not
support the necessary features.  I still think I was right,
but I don't think my arguments prevailed.  So I have reverted
to my standard, conservative position that synthesis users
should restrict themselves to a lowest-common-denominator
style.  I make a few exceptions: for example, there are 
still synthesis tools around (at least, there were the 
last time I checked) that won't tolerate Verilog 
with a mixture of blocking and nonblocking assignments,
thereby making it impossible to emulate VHDL variables
in Verilog.  That is so laughably stupid that I'm prepared
to tell people not to use such tools.  But support for 
initialization is still restricted to a small subset
of the available tools, so I can't reasonably recommend
it except to Xilinx- or Altera-specific users.

My conservative position must not be taken as an argument
that we shouldn't try to move forward.  Basically I agree
with everything Kolja has said; it's just that I am obliged
to help people to make the best of what they have today - 
and sometimes those people need to write highly portable code.
-- 
Jonathan Bromley, Consultant

DOULOS - Developing Design Know-how
VHDL * Verilog * SystemC * e * Perl * Tcl/Tk * Project Services

Doulos Ltd., 22 Market Place, Ringwood, BH24 1AW, UK
jonathan.bromley@MYCOMPANY.com
http://www.MYCOMPANY.com

The contents of this message may contain personal views which 
are not the views of Doulos Ltd., unless specifically stated.

Article: 123709
Subject: Re: V5 Configuration via SPI
From: austin <austin@xilinx.com>
Date: Sun, 02 Sep 2007 15:19:21 -0700
Links: << >>  << T >>  << A >>
Sean,

USR_ACCESS_VIRTEX5

in

http://direct.xilinx.com/bvdocs/userguides/ug191.pdf

page 92:

"The STARTUP_VIRTEX5 block has inputs that allow the user to take over 
the CCLK and DONE pins after the EOS (End-Of-Startup) signal is asserted."

Not sure, but this sounds like what you need?

Austin

Article: 123710
Subject: Re: Null statement in VHDL
From: "KJ" <kkjennings@sbcglobal.net>
Date: Sun, 02 Sep 2007 22:38:38 GMT
Links: << >>  << T >>  << A >>

"Jonathan Bromley" <jonathan.bromley@MYCOMPANY.com> wrote in message 
news:shbmd3pmpmo6sfkqj46lv0ls2dhssq2di0@4ax.com...
> On Tue, 28 Aug 2007 14:26:59 -0000, "comp.arch.fpga"
> <ksulimma@googlemail.com> wrote:
>
>
>>> E.g. Jonathan Bromley posted on 2007 March 5th:
> in comp.lang.vhdl around January 2006.  I tried there to
> argue that synthesis front-ends should support any construct
> that maps to physically realisable hardware, and the back-end
> (mapper) should error-out if the specific target does not
> support the necessary features.  I still think I was right,

I don't recall the thread but I totally agree with you.

> but I don't think my arguments prevailed.  So I have reverted
> to my standard, conservative position that synthesis users
> should restrict themselves to a lowest-common-denominator
> style.

For whatever tools that you have that meet the following two tests, did you 
open a service request?
- Tool claims compliance to VHDL standard
- Tool does not error (or at least warning) about ignoring the initial value 
assignment

If you did not, then (shame on you) and why not?  The way to get tool 
vendors to change their tools is to hit them directly with a service request 
on their tool.  It's not always successful, but I've found that many times 
it is in this type of example since they have been called on a particular 
area of non-compliance on a tool that they say is compliant to a particular 
standard.

> My conservative position must not be taken as an argument
> that we shouldn't try to move forward.  Basically I agree
> with everything Kolja has said; it's just that I am obliged
> to help people to make the best of what they have today -
> and sometimes those people need to write highly portable code.

And publicize against the tools that don't support the language.

KJ 



Article: 123711
Subject: Beginning FPGA programming
From: James Harris <james.harris.1@googlemail.com>
Date: Sun, 02 Sep 2007 15:40:58 -0700
Links: << >>  << T >>  << A >>
I'd like to try out some ideas and would appreciate some guidance.
Would a 200k-gate FPGA be enough for a simple or complex 8-bit CPU
design? I have this Digilent product:

   http://www.digilentinc.com/Products/Detail.cfm?Prod=NEXYS

but being totally new to hardware design I have some questions:

1. What language would be suitable - VHDL or Verilog? Or are there
others?

2. What description style would be appropriate? Or can I break the
design into modules, initially make each module with a high level
description and rewrite it at a lower level later as needed?


Article: 123712
Subject: FPGA CPU
From: James Harris <james.harris.1@googlemail.com>
Date: Sun, 02 Sep 2007 15:43:31 -0700
Links: << >>  << T >>  << A >>
On 2 Sep, 23:40, James Harris <james.harri...@googlemail.com> wrote:
> I'd like to try out some ideas and would appreciate some guidance.
> Would a 200k-gate FPGA be enough for a simple or complex 8-bit CPU
> design? I have this Digilent product:
>
>    http://www.digilentinc.com/Products/Detail.cfm?Prod=NEXYS
>
> but being totally new to hardware design I have some questions:
>
> 1. What language would be suitable - VHDL or Verilog? Or are there
> others?
>
> 2. What description style would be appropriate? Or can I break the
> design into modules, initially make each module with a high level
> description and rewrite it at a lower level later as needed?

Should have said that part of the design is a large crossbar switch.
It may be relevant to the number of gates and/or the design style.

--
TIA,
James


Article: 123713
Subject: Re: FPGA CPU
From: Andreas Ehliar <ehliar@lysator.liu.se>
Date: Sun, 2 Sep 2007 22:44:04 +0000 (UTC)
Links: << >>  << T >>  << A >>
On 2007-09-02, James Harris <james.harris.1@googlemail.com> wrote:
> On 2 Sep, 23:40, James Harris <james.harri...@googlemail.com> wrote:
>> I'd like to try out some ideas and would appreciate some guidance.
>> Would a 200k-gate FPGA be enough for a simple or complex 8-bit CPU
>> design? I have this Digilent product:
>>
>>    http://www.digilentinc.com/Products/Detail.cfm?Prod=NEXYS
>>
>> but being totally new to hardware design I have some questions:
>>
>> 1. What language would be suitable - VHDL or Verilog? Or are there
>> others?
>>
>> 2. What description style would be appropriate? Or can I break the
>> design into modules, initially make each module with a high level
>> description and rewrite it at a lower level later as needed?
>
> Should have said that part of the design is a large crossbar switch.
> It may be relevant to the number of gates and/or the design style.

How large is "large"? But it should be fairly simply to calculate the
size of a crossbar switch.

Assuming the switch is implemented using muxes:
A 2-to-1 mux uses 1 LUT
A 4-to-1 mux uses 2 LUTs
An 8-to-1 mux uses 4 LUTs
A 16-to-1 mux uses 8 LUTs
(and so on)

Multiply this with the number of ports and the width of each port to
get a rough total LUT cost. (Ignoring the cost of the arbiter or
other configuration logic for the crossbar.)

An XC3S200 has 3840 LUTs if I calculate correctly. So an 8x8 crossbar
with 8 bit wide ports should fit fairly comfortable whereas for example
a 16x16 crossbar of width 16 will consume half the FPGA.


How often do you need to reconfigure the inputs/outputs of the
crossbar? If it is not very often, perhaps you could serially load
configuration data into SRL16 elements to reduce the number of
required LUTs.

What kind of bitrate do you need through the crossbar? Perhaps you
could use a time-multiplexed bus instead?

/Andreas

Article: 123714
Subject: Re: V5 Configuration via SPI
From: John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com>
Date: Sun, 02 Sep 2007 16:02:27 -0700
Links: << >>  << T >>  << A >>
On Sun, 02 Sep 2007 17:58:27 +0200, Sean Durkin <news_sep07@durkin.de>
wrote:

>Hi *,
>
>on one of our next boards, I'd like to use the Virtex5 feature to have
>it program itself from an external SPI flash. In that case, the FPGA
>will provide the SPI clock via the dedicated CCLK pin.
>
>What happens to the CCLK pin after configuration is done? Will it go to
>tristate or still be an output with permanent '0' or '1'?
>
>The thing is that I want to use the remaining space in the SPI flash
>from a microcontroller that is also on the board. The uC then would be
>the master to the SPI flash after configuration and would have to drive
>the SPI clock, but this only works if CCLK goes to tristate.
>
>There's other ways to do this (like hook up the SPI flash to the uC and
>have that load the FPGA and such), but the most "elegant" solution would
>be to just connect flash and uC to the SPI and switch masters on the bus
>after configuration, if that's possible.
>
>Another "problem" is that I also want to have an SPI slave interface
>inside the FPGA, to set up registers and such via the uC. Since I can't
>use the CCLK pin as a clock input later on, I'd have to connect the SPI
>clock from the uC to another pin on the FPGA. So basically I'd have a
>clock trace that goes from uC to SPI flash and then on the FPGA to the
>CCLK pin an another clock pin. This line would have to be driven from
>the FPGA during configuration and from the uC later on.
>
>Certainly not optimal from a signal integrity point of view, but has
>anyone tried this?

That all sounds reasonable, but be very careful about signal integrity
on that big, possibly stubby, clock net, especially where it becomes
"another clock pin." Any mistermination plateau, or a slow (a few ns
slow!) or ringy clock with a little crosstalk, can make trouble.
Unless the situation is perfect, we put a tiny-logic schmitt adjacent
to any FPGA clock that we're driving, including CCLK if the fpga is in
slave serial mode.

John



Article: 123715
Subject: Cannot pass par in tcl, Xilinx webpack 9.1.
From: fl <rxjwg98@gmail.com>
Date: Sun, 02 Sep 2007 16:23:59 -0700
Links: << >>  << T >>  << A >>
Hi,
I am learning tcl in Xilinx 9.1. For the learning example watchvhd,
the following error occurs.

ERROR:Portability:90 - Command line error: Switch "-intstyle" is
excluded or already used.

What's wrong with it?

But for my slow laptop, which installed a 8.2 version ISE, it can pass
the implementation. Could you help me out? Thanks in advance.






# open the project and set project-level properties
project open watchvhd.ise
project set family Virtex2P
project set device xc2vp2
project set package fg256
project set speed -7
# add all the source HDLs and ucf
#xfile add stopwatch.vhd statmatch.vhd cnt60.vhd dcm1.vhd decode.vhd
#xfile add tenths.vhd hex2led
#xfile add watchvhd.ucf
# define all partitions
#partition new /stopwatch/MACHINE
#partition new /stopwatch/Inst_dcm1
#partition new /stopwatch/XCOUNTER
#partition new /stopwatch/decoder
#partition new /stopwatch/sixty
#partition new /stopwatch/lsbled
#partition new /stopwatch/msbled
# get partition properties
set props [partition properties]
puts "Partition Properties : $props"
# get top
set top [project get top]

# get project properties available
set props2 [project properties]
puts "Project Properties for top-level module $top $props2"
# inspect the current value for the following batch application
options
#set map_guide_mode [project get "MAP Guide Mode"]
#puts "MAP Guide Mode = $map_guide_mode"
#set par_guide_mode [project get "PAR Guide Mode"]
#puts "PAR Guide Mode = $par_guide_mode"
# set batch application options :
# 1. set synthesis optimization goal to speed
# 2. ignore any LOCs in ngdbuild
# 3. perform timing-driven packing
# 4. use the highest par effort level
# 5. set the par extra effort level
# 6. pass "-instyle xflow" to the par command-line
# 7. generate a verbose report from trce
# 8. create the IEEE 1532 file during bitgen

project set "Optimization Goal" "Speed"
#project set "Hierarchy Separator" /
project set "Use LOC Constraints" "false"
project set "Perform Timing-Driven Packing and Placement" "TRUE"
project set "Place & Route Effort Level (Overall)" "High"
project set "Extra Effort (Highest PAR level only)" "Continue on
Impossible"
project set "Other Place & Route Command Line Options" "-intstyle
silent"
project set "Report Type" "Verbose Report"
project set "Create IEEE 1532 Configuration File" "TRUE"
# run the entire xst-to-trce flow
process run "Implement Design"
# close project
project close


Article: 123716
Subject: Low-level FPGA programming?
From: drop669@gmail.com
Date: Sun, 02 Sep 2007 17:06:04 -0700
Links: << >>  << T >>  << A >>
Hi.
It is possible to have a format of .pof/.sof files from Altera, thus,
to decompile some ready projects and try to make our own, omitting
Altera software tools?


Article: 123717
Subject: [Nios II] How Can I define the pio inputs as a interrupt?
From: hezhikuan2007@gmail.com
Date: Sun, 02 Sep 2007 19:36:06 -0700
Links: << >>  << T >>  << A >>

I use the Nios II system to achieve my design. I have define a data
bus from the outside of the FPGA, I use a 8-bits PIO ip to connect the
signal and the FPGA.

I want to achieve the following aim: when the outside signals
changes,  Nios generates  a IRQ to CPU, and I can insert my
instructions.

Please tell me , how can I do it ?


Article: 123718
Subject: Re: [Nios II] How Can I define the pio inputs as a interrupt?
From: Mark McDougall <markm@vl.com.au>
Date: Mon, 03 Sep 2007 12:48:49 +1000
Links: << >>  << T >>  << A >>
hezhikuan2007@gmail.com wrote:

> I want to achieve the following aim: when the outside signals
> changes,  Nios generates  a IRQ to CPU, and I can insert my
> instructions.

Read Chapter 13 of the QUartus II Handbook Volume 5.
(aka n2cpu_nii51007-2.pdf)

Or if that's not quite what you need, create a (trivial) SOPC component
that generates an interrupt when you need to.

Regards,

-- 
Mark McDougall, Engineer
Virtual Logic Pty Ltd, <http://www.vl.com.au>
21-25 King St, Rockdale, 2216
Ph: +612-9599-3255 Fax: +612-9599-3266

Article: 123719
Subject: GTKWave 3.1.0 for win32
From: mk <kal*@dspia.*comdelete>
Date: Sun, 02 Sep 2007 19:55:17 -0700
Links: << >>  << T >>  << A >>
Hi,
I updated the GTKWave for Win32 port I am maintaining. It's at 3.1.0
which supports reload  now.

http://www.dspia.com/gtkwave.html

Article: 123720
Subject: Re: How Can I define the pio inputs as a interrupt?
From: hezhikuan2007@gmail.com
Date: Sun, 02 Sep 2007 20:10:05 -0700
Links: << >>  << T >>  << A >>
Thank you very much! You give me a lot!


Article: 123721
Subject: Re: New keyword 'orif' and its implications
From: Weng Tianxiang <wtxwtx@gmail.com>
Date: Sun, 02 Sep 2007 21:00:19 -0700
Links: << >>  << T >>  << A >>
On Aug 29, 3:13 am, Colin Paul Gloster <Colin_Paul_Glos...@ACM.org>
wrote:
> Jim,
>
> On 2007-08-28, Jim Lewis <j...@synthworks.com> wrote:
>
> |------------------------------------------------------------------------=
--=AD|
> |"Weng,                                                                  =
  |
> |[..]                                                                    =
  |
> |                                                                        =
  |
> |[..]                                                                    =
  |
> |                                                                        =
  |
> |I noted that in your code you mixed orif mixed with elsif (copied below)=
, |
> |was this intentional?  One hand, these could convey exactly what I want =
  |
> |(because there are many cases like this), OTOH, it could be a mistake.  =
  |
> |Hence the intent is ambiguous and during a design review, one would have=
  |
> |to pay particular attention to this and ask questions about your intent =
  |
> |and its validation.  A copy of your code is below.                      =
  |
> |                                                                        =
  |
> |If(E0 =3D '1') then                                                     =
    |
> |State_A <=3D E0_S;                                                      =
    |
> |Orif(E1 =3D '1') then                                                   =
    |
> |State_A <=3D E_S;                                                       =
    |
> |Orif(E2 =3D '1') then                                                   =
    |
> |State_A <=3D E2_S;                                                      =
    |
> |elsIf(E3 =3D '1') then                                                  =
    |
> |State_A <=3D E3_S;                                                      =
    |
> |Orif(E4 =3D '1') then                                                   =
    |
> |State_A <=3D E4_S;                                                      =
    |
> |Orif(E5 =3D '1') then                                                   =
    |
> |State_A <=3D E5_S;                                                      =
    |
> |elsIf(E6 =3D '1') then                                                  =
    |
> |"                                                                       =
  |
> |------------------------------------------------------------------------=
--=AD|
>
> Yes,
>
> Weng really did intend to have both orif branches and elsif branches
> in a single if statement (seenews:1188325844.164564.136940@z24g2000prh.go=
oglegroups.com
> ). I think the intention would be clearer with different
> indentation. E.g.
> If(E0 =3D '1') then
>           State_A <=3D E0_S;
>       Orif(E1 =3D '1') then
>           State_A <=3D E_S;
>       Orif(E2 =3D '1') then
>           State_A <=3D E2_S;
>
> elsIf(E3 =3D '1') then
>           State_A <=3D E3_S;
>       Orif(E4 =3D '1') then
>           State_A <=3D E4_S;
>       Orif(E5 =3D '1') then
>           State_A <=3D E5_S;
> elsIf(E6 =3D '1') then
> --...
>
> |------------------------------------------------------------------------=
--=AD|
> |"[..]                                                                   =
  |
> |                                                                        =
  |
> |[..]  The danger in adding new keywords is that they may                =
  |
> |conflict with a name (signal, ...) already used in someone's design     =
  |
> |and cause an old design to be a syntax error in the new language        =
  |
> |revision.  This generally does not please people and means they         =
  |
> |have to add special handling for the file (compile flags).              =
  |
> |                                                                        =
  |
> |[..]"                                                                   =
  |
> |------------------------------------------------------------------------=
--=AD|
>
> A newly introduced reserved word would be guaranteed to not conflict
> with old code by not being possible to misinterpret as a basic
> identifier (basic_identifier ::=3D letter { [ underline ]
> letter_or_digit), e.g. by starting with an underline or by containing
> a percentage sign.
>
> Best regards,
> Colin Paul

Hi Colin,
I have difficulties to understand following segment you are talking
about the name conflicts.

|[..]  The danger in adding new keywords is that they
may                  |
|conflict with a name (signal, ...) already used in someone's
design       |
|and cause an old design to be a syntax error in the new
language          |
|revision.  This generally does not please people and means
they           |
|have to add special handling for the file (compile
flags).                |
|
|
|
[=2E.]"
|
|--------------------------------------------------------------------------=
=AD|


A newly introduced reserved word would be guaranteed to not conflict
with old code by not being possible to misinterpret as a basic
identifier (basic_identifier ::=3D letter { [ underline ]
letter_or_digit), e.g. by starting with an underline or by containing
a percentage sign.

I would like to know what Jim's name conflicting mechanism is.

1=2E Here I have an old file using the following statements:
 assertion zero_one_hot();  -- the function was defined in an old file

Here I have another new file using the following statements:
 assertion zero_one_hot();  -- try to refer to Jim's function.

Those two above files must be compiled together using 2006 version.
What happens?

No name conflicting?

2=2E Here is orif name conflicting.

Here I have an old file containing orif as a signal and has the
following statements.

Signal orif : std_logic;
.=2E.
If(orif =3D ...) then

Here I have an new file containing orif as a signal and has the
following statements.

Signal orif : std_logic;
.=2E.
If(orif =3D ...) then

When the old file is compiled by new 2006 version, what would happen
with above two statements? When the new file is compiled by new 2006
version, what would happen with above two statements?

How does 2006 version know that what it deals with is an old file or a
new file with your method?

Jim, here is my solution to your naming conflicting problem.

VERY SIMPLE AND COMPLETE !!!

If a 2006 version compiler uses file date to distinguish old file or
new file by reading their file generation year, before 2007 and after
2007, there is no any trouble to deal with new or old files and both
files can safely be compiled without error.

For 2006 compiler do the following things:
1=2E Read vhd file;
2=2E Read their last update date and get year number;
3=2E When year number <=3D 2006, orif is cleared in reserved word list;
When year number >=3D 2007, oris is in reserved word list.
4=2E If more accurate date is needed, it can add month and date to the
check list.

It doesn't need to add any extra characters before orif. I think
Verilog had used the same method as I suggested and it would guarantee
that there is no naming conflict.

Any comments?

Thank you.

Weng






Article: 123722
Subject: Re: Low-level FPGA programming?
From: Paul Leventis <paul.leventis@gmail.com>
Date: Mon, 03 Sep 2007 04:17:54 -0000
Links: << >>  << T >>  << A >>
> It is possible to have a format of .pof/.sof files from Altera, thus,
> to decompile some ready projects and try to make our own, omitting
> Altera software tools?

No, we do not give out the format of the POF/SOF.

Sorry,

Paul Leventis
Altera Corp.


Article: 123723
Subject: Re: New keyword 'orif' and its implications
From: Weng Tianxiang <wtxwtx@gmail.com>
Date: Sun, 02 Sep 2007 21:30:22 -0700
Links: << >>  << T >>  << A >>
Jim and Colin,
Here is a more flexible method that can avoid orif name conflicting
problem at any situations.

For 2006 compiler do the following things:
1. When being installed, VHDL 2006 compiler pops up a window to allow
clients to set a date after which all VHDL files will be compiled with
orif feature, then writes the date into VHDL initial file with item:
2006_orif_Starting_Date = 09/02/2007;
2. Read vhd file;
3. Read its last update date;
4. If the file date is after the date contained in
2006_orif_Starting_Date equation of VHDL.ini, orif is in reserved word
list, otherwise orif is cleared in reserved word list.

All trouble happens only at installation. If it is found later there
is need to change the effective date, users can modify the date
contained in 2006_orif_Starting_Date equation of the initial file.

Thank you.

Weng


Article: 123724
Subject: Re: An FPGA startup is seeking testcase from potential customers
From: j.d.morrison@gmail.com
Date: Mon, 03 Sep 2007 06:35:06 -0000
Links: << >>  << T >>  << A >>
Hi,

While low-power FPGAs are extremely interesting and there definetely
is market opportunity there, it's not the most convincing start to go
and ask example applications from the newsgroups...

Having said that, you can always start by beating AudioDE
http://www.arm.com/products/DataEngines/audioDE.html

-Doug

On Aug 30, 9:21 pm, siliconbluetechnol...@yahoo.com wrote:
> Hello,
>
> Silicon Blue Technologies is an FPGA startup located in Sunnyvale CA.
> The FPGA product it is developing has ultra low power consumption and
> is targeted to low power applications.
>
> The company is seeking some commercial designs in the form of Verilog
> and/or VHDL designs to test its software and FPGA architecture.
>
> Please provide your input if you are interested in the product or have
> testcases which can be useful to test both FPGA hardware and software
> capabilities.
>
> Thank you.
>
> Silicon Blue Technologieshttp://www.siliconbluetech.com





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