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 136625

Article: 136625
Subject: Re: timer interrupt problem: microblaze
From: Bryan <bryan.fletcher@avnet.com>
Date: Wed, 26 Nov 2008 17:14:47 -0800 (PST)
Links: << >>  << T >>  << A >>
Not sure what the problem is with your code.  Here's an example with
one timer.  It's 10.1, but there weren't any changes in the interrupt
stuff between 9.2 and 10.1 (so I'm told).  This is based on a lab from
one of Avnet's Speedway trainings.  I ran it on the Xilinx Spartan-3A
DSP 1800A Starter and verified that the interrupts are indeed
happening.  There is a bit file in the project directory if you don't
want to rebuild the project.

Bryan

The following file has been made available for you to download from
Avnet's File Transfer web site:
http://xfer.avnet.com/uploads/Xil3S1800ADSP_Interrupt_v10.1.03.zip

Click on the hyperlink or enter this URL into your web browser to
retrieve the file.
This file will remain on the server for approximately 5 days from the
date of the upload at which time it will be deleted.  Please be sure
to download it before the expiration time.
This file will expire on Dec  1, 2008.

File Size: 232357 Bytes


On Nov 26, 12:22=A0am, bish <bishes...@gmail.com> wrote:
> On Nov 26, 4:58=A0am, David <simianfe...@gmail.com> wrote:
>
>
>
>
>
> > On Nov 26, 2:37=A0am, bish <bishes...@gmail.com> wrote:
>
> > > On Nov 25, 12:25=A0pm, Matthias Alles <REMOVEallesCAPIT...@NOeit.SPAM=
uni-
>
> > > kl.de> wrote:
> > > > Hi!
>
> > > > I wonder, whether "one_second_flag" is declared as volatile? If not=
, the
> > > > compiler optimizes your if-statement in the while(1) loop away. You=
 can
> > > > check this by using mb-objdump.
>
> > > I tried using the volatile for one_second_flag, still it does not
> > > work. It just prints "the value of count =3D 1" once in terminal and
> > > nothing happens then.
>
> > > > Cheers,
> > > > Matthias
>
> > > > bish schrieb:
>
> > > > > I am trying to use a timer for regular interrupt in microblaze. I=
 am
> > > > > using edk 9.2i and spartan 3a dsp 1800a.
> > > > > Even following a simple lab example widely used by beginners didn=
't
> > > > > work:http://users.utcluj.ro/~baruch/ssce/labor/EDK-L5-e.pdf
>
> > > > > I have connected all the interrupt ports correctly as evident fro=
m the
> > > > > following portion of the mhs file:
> > > > > BEGIN microblaze
> > > > > =A0PARAMETER HW_VER =3D 7.00.a
> > > > > ...........
> > > > > ...........
> > > > > PORT INTERRUPT =3D interrupt
> > > > > END
>
> > > > > BEGIN xps_timer
> > > > > =A0PARAMETER INSTANCE =3D delay
> > > > > =A0PARAMETER HW_VER =3D 1.00.a
> > > > > =A0PARAMETER C_ONE_TIMER_ONLY =3D 1
> > > > > =A0PARAMETER C_BASEADDR =3D 0x8141c200
> > > > > =A0PARAMETER C_HIGHADDR =3D 0x8141c3ff
> > > > > =A0BUS_INTERFACE SPLB =3D mb_plb
> > > > > =A0PORT Interrupt =3D timer1
> > > > > =A0PORT CaptureTrig0 =3D net_gnd
> > > > > END
>
> > > > > BEGIN xps_intc
> > > > > =A0PARAMETER INSTANCE =3D xps_intc_0
> > > > > =A0PARAMETER HW_VER =3D 1.00.a
> > > > > =A0PARAMETER C_BASEADDR =3D 0x81418000
> > > > > =A0PARAMETER C_HIGHADDR =3D 0x814181ff
> > > > > =A0BUS_INTERFACE SPLB =3D mb_plb
> > > > > =A0PORT Irq =3D interrupt
> > > > > =A0PORT Intr =3D timer1
> > > > > END
>
> > > > > Now for the software settings since I am using edk 9.2i, it does =
not
> > > > > have option for registering our interrupt handler in software pla=
tform
> > > > > settings window (which is what the lab suggests), I used the
> > > > > microblaze_register_handler(...) function ( I took me 3 days to f=
igure
> > > > > out this), =A0but I still don't get how it works differently from=
 the
> > > > > function XIntc_RegisterHandler.
> > > > > The portion of C file is as follows:
> > > > > void timer_int_handler(void * baseaddr_p) {
> > > > > =A0 =A0 /* Add variable declarations here */
> > > > > =A0 =A0unsigned int csr;
> > > > > =A0 =A0/* Read timer 0 CSR to see if it raised the interrupt */
> > > > > =A0 =A0csr =3D XTmrCtr_mGetControlStatusReg(XPAR_DELAY_BASEADDR,0=
);
> > > > > =A0 =A0/* If the interrupt occurred, then increment a counter */
> > > > > =A0 =A0/* and set one_second_flag to 1 */
> > > > > =A0 =A0if (csr & XTC_CSR_INT_OCCURED_MASK ) {
> > > > > =A0 =A0 =A0 =A0 =A0 =A0count ++;
> > > > > =A0 =A0 =A0 =A0 =A0 =A0one_second_flag =3D 1;
> > > > > =A0 =A0}
>
> > > > > =A0 =A0/* Display the count on the LEDs */
> > > > > =A0 =A0XGpio_mSetDataReg(XPAR_LED_HIGHADDR, LEDChan, count);
>
> > > > > =A0 =A0/* Print the count using the UART*/
> > > > > =A0 =A0xil_printf("count value is: %x\n\r", count);
> > > > > =A0 =A0/* Clear the timer interrupt */
> > > > > =A0 =A0XTmrCtr_mSetControlStatusReg(XPAR_DELAY_BASEADDR,0,csr);
> > > > > }
>
> > > > > int main() {
>
> > > > > =A0 int count_mod_3;
>
> > > > > =A0 //registering an interrupt handler
> > > > > =A0 microblaze_register_handler((XInterruptHandler) timer_int_han=
dler,
> > > > > (void *)0);
>
> > > > > =A0 /* Register the Timer interrupt handler in the vector table *=
/
> > > > > =A0 XIntc_RegisterHandler(XPAR_XPS_INTC_0_BASEADDR,
> > > > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0XPAR_X=
PS_INTC_0_DELAY_INTERRUPT_INTR,
> > > > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(XInte=
rruptHandler) timer_int_handler,
> > > > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(void =
*)XPAR_DELAY_BASEADDR);
> > > > > =A0 /* Enable MicroBlaze Interrupts */
> > > > > =A0 microblaze_enable_interrupts();
>
> > > > > =A0 /* Initialize and set the direction of the GPIO connected to =
LEDs */
> > > > > =A0 XGpio_Initialize(&gpio, XPAR_LED_DEVICE_ID);
> > > > > =A0 XGpio_SetDataDirection(&gpio,LEDChan, 0);
>
> > > > > =A0 /* Start the interrupt controller */
> > > > > =A0 XIntc_mMasterEnable(XPAR_XPS_INTC_0_BASEADDR);
> > > > > =A0 XIntc_mEnableIntr(XPAR_XPS_INTC_0_BASEADDR, 0x1);
>
> > > > > =A0 /* Set the gpio as output on high 8 bits (LEDs)*/
> > > > > =A0 XGpio_mSetDataReg(XPAR_LED_DEVICE_ID,LEDChan, ~count);
> > > > > =A0 xil_printf("The value of count =3D %d\n\r", count);
>
> > > > > =A0 /* Set the number of cycles the timer counts before interrupt=
ing */
> > > > > =A0 XTmrCtr_mSetLoadReg(XPAR_DELAY_BASEADDR, 0,
> > > > > (timer_count*timer_count) * 50000000);
>
> > > > > =A0 /* Reset the timers, and clear interrupts */
> > > > > =A0 XTmrCtr_mSetControlStatusReg(XPAR_DELAY_BASEADDR, 0,
> > > > > XTC_CSR_INT_OCCURED_MASK | XTC_CSR_LOAD_MASK );
>
> > > > > =A0 /* Enable timer interrupts in the interrupt controller */
> > > > > =A0 XIntc_mEnableIntr(XPAR_DELAY_BASEADDR, XPAR_DELAY_INTERRUPT_M=
ASK);
>
> > > > > =A0 /* Start the timers */
> > > > > =A0 XTmrCtr_mSetControlStatusReg(XPAR_DELAY_BASEADDR, 0,
> > > > > XTC_CSR_ENABLE_TMR_MASK | XTC_CSR_ENABLE_INT_MASK |
> > > > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0XTC_CSR_AUTO_RELOAD_MASK | XTC_CSR_DOWN_COUNT_MASK);
>
> > > > > =A0 /* Wait for interrupts to occur */
> > > > > =A0 while(1) {
> > > > > =A0 =A0if(one_second_flag){
> > > > > =A0 =A0 =A0 =A0 =A0 =A0count_mod_3 =3D count % 3;
> > > > > =A0 =A0 =A0 =A0 =A0 =A0if(count_mod_3 =3D=3D 0)
> > > > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0xil_printf("Interrupt take=
n at %d seconds \n\r",count);
> > > > > =A0 =A0 =A0 =A0 =A0 =A0one_second_flag=3D0;
> > > > > =A0 =A0 =A0 =A0 =A0 =A0xil_printf(".");
> > > > > =A0 =A0 =A0 =A0 =A0 =A0}
> > > > > =A0 =A0}
> > > > > }
>
> > > > > When I run the system, the value of count does not change from 1.=
 What
> > > > > could be the problem?- Hide quoted text -
>
> > > > - Show quoted text -
>
> > Hello,
>
> > Here is how I set up a timer interrupt in 9.2:
>
> > void TimerCounterHandler(void *CallBackRef)
> > {
> > =A0 =A0 =A0 =A0 print("timer interrupt ");
>
> > }
>
> > Int main (void) {
>
> > =A0 =A0 =A0 =A0 XIntc intr_ctrl;
> > =A0 =A0 =A0 =A0 XTmrCtr timr;
>
> > =A0 =A0 =A0 =A0 XIntc_Initialize(&intr_ctrl,XPAR_XPS_INTC_0_DEVICE_ID);
> > =A0 =A0 =A0 =A0 XTmrCtr_Initialize(&timr,XPAR_XPS_TIMER_1_DEVICE_ID);
>
> > =A0 =A0 =A0 =A0 XIntc_Connect(&intr_ctrl, XPAR_XPS_INTC_0_XPS_TIMER_1_I=
NTERRUPT_INTR,
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(XInterruptHandl=
er)
> > XTmrCtr_InterruptHandler,
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(void *)&timr);
>
> > =A0 =A0 =A0 =A0 XIntc_Start(&intr_ctrl, XIN_REAL_MODE);
>
> > =A0 =A0 =A0 =A0 XIntc_Enable(&intr_ctrl, XPAR_XPS_INTC_0_XPS_TIMER_1_IN=
TERRUPT_INTR);
>
> > =A0 =A0 =A0 =A0 XTmrCtr_SetHandler(&timr, (void *)TimerCounterHandler, =
void);
>
> This issued an error so I replaced void with NULL in the third
> argument above. Apart from that I didn't change anything, but still
> the terminal never printed "timer interrupt" so still the problem
> remains!!
>
>
>
>
>
> > =A0 =A0 =A0 =A0 XTmrCtr_SetOptions(&timr, 0,
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0XTC_INT_MODE_OPTION | XT=
C_AUTO_RELOAD_OPTION);
>
> > =A0 =A0 =A0 =A0 XTmrCtr_SetResetValue(&timr, 0, 0xF0000000);
>
> > =A0 =A0 =A0 =A0 XTmrCtr_Start(&timr,0);
>
> > =A0 =A0 =A0 =A0 microblaze_enable_interrupts();
>
> > =A0 =A0 =A0 =A0while(1){
> > =A0 =A0 =A0 //wait for interrupts
> > =A0 =A0 =A0 }
>
> > }
>
> > If you are using the Intc component, you no longer need to use the
> > microblaze_register_handler function - instead use the XIntc_Connect()
> > function.
> > The XTmrCtr driver provides its own interrupt handler
> > XTmrCtr_InterruptHandler() which you should use to service the
> > interrupt. =A0It will issue a callback to a function of your choice (se=
t
> > with XTmrCtr_SetHandler)
>
> > Hope this helps,
>
> > David- Hide quoted text -
>
> > - Show quoted text -- Hide quoted text -
>
> - Show quoted text -- Hide quoted text -
>
> - Show quoted text -


Article: 136626
Subject: Infer Dual Port Block ROM for Xilinx FPGA
From: Sudhir.Singh@email.com
Date: Wed, 26 Nov 2008 17:47:20 -0800 (PST)
Links: << >>  << T >>  << A >>
Hi Guys,
I am trying to figure out a way to infer dual port ROM using BRAM on
Xilinx FPGAs. Documentation shows how to infer single port ROMs but
couldn't find any info on dual port.
Any info on this will be greatly appreciaied.

Cheers
Sudhir

Article: 136627
Subject: Re: Problem with post-route simulation / timing simulation
From: Andreas Ehliar <ehliar-nospam@isy.liu.se>
Date: Thu, 27 Nov 2008 03:41:14 +0000 (UTC)
Links: << >>  << T >>  << A >>
On 2008-11-27, ikki <jasperng10@gmail.com> wrote:
> Hi there, I tried to run my design using modelsim through Xilinx ISE,
> However it seems i keep encountering this problem. Can anyone know what
> isthe problem and how to fix this ? ... It seems to be missing a library
> named simprim. But I have no idea how to get the library and implement it ?
> ..

You will need to compile the Xilinx simulation libraries. You can compile
this library using the compxlib command. (You can also click somewhere in
ISE to compile it but I don't remember exactly where right now, I usually
don't use the GUI any longer.)

/Andreas

Article: 136628
Subject: Re: Infer Dual Port Block ROM for Xilinx FPGA
From: Mike Treseler <mtreseler@gmail.com>
Date: Wed, 26 Nov 2008 22:10:18 -0800
Links: << >>  << T >>  << A >>
Sudhir.Singh@email.com wrote:

> I am trying to figure out a way to infer dual port ROM using BRAM on
> Xilinx FPGAs. 

I would infer two identical single port ROMs
like the rom example here:
http://mysite.verizon.net/miketreseler/

True dual port bram is vendor specific
and probably has to be instanced
rather than inferred.

Good luck.

          -- Mike Treseler

Article: 136629
Subject: Problem with post-route simulation / timing simulation
From: "ikki" <jasperng10@gmail.com>
Date: Thu, 27 Nov 2008 00:37:38 -0600
Links: << >>  << T >>  << A >>
Hi there, I tried to run my design using modelsim through Xilinx ISE,
However it seems i keep encountering this problem. Can anyone know what
isthe problem and how to fix this ? ... It seems to be missing a library
named simprim. But I have no idea how to get the library and implement it ?
...

Help is appreciated thanks.

# -- Loading package standard
# -- Loading package std_logic_1164
# ** Error: (vcom-19) Failed to access library 'simprim' at "simprim".
# No such file or directory. (errno = ENOENT)
# ** Error: C:/FPGAdv71LSPS/Modeltech/win32/vcom failed.
# Error in macro ./tb_TopLevelRS232.tdo line 6
# C:/FPGAdv71LSPS/Modeltech/win32/vcom failed.
# while executing
# "vcom -explicit -93 "netgen/par/TopLevelRS232_timesim.vhd""


jasperng 


Article: 136630
Subject: Re: Infer Dual Port Block ROM for Xilinx FPGA
From: Pinhas <bknpk@hotmail.com>
Date: Wed, 26 Nov 2008 22:39:59 -0800 (PST)
Links: << >>  << T >>  << A >>
On 27 =D7=A0=D7=95=D7=91=D7=9E=D7=91=D7=A8, 03:47, Sudhir.Si...@email.com w=
rote:
> Hi Guys,
> I am trying to figure out a way to infer dual port ROM using BRAM on
> Xilinx FPGAs. Documentation shows how to infer single port ROMs but
> couldn't find any info on dual port.
> Any info on this will be greatly appreciaied.
>
> Cheers
> Sudhir

You may want to look at h--p://bknpk.no-ip.biz/cpu_8051_ver/top.html.
There are two examples for RAM and ROM usage (i8051_ram_x.v and
i8051_rom_x.v).
There are a lot of others examples both VHDL and verilog for RAM and
RAM (h--p://bknpk.no-ip.biz).

Article: 136631
Subject: Re: Problem with post-route simulation / timing simulation
From: Mike Treseler <mtreseler@gmail.com>
Date: Wed, 26 Nov 2008 22:50:50 -0800
Links: << >>  << T >>  << A >>
ikki wrote:
> # ** Error: C:/FPGAdv71LSPS/Modeltech/win32/vcom failed.


Click up a shell, bash or cmd.exe

mkdir play
cd play
vcom

If this doesn't give you the vcom usage,
type "exit" to close the shell,
find vcom, and add it's location
to your path and try again.

        -- Mike Treseler

Article: 136632
Subject: Re: Caches & FPGAs
From: Andreas Ehliar <ehliar-nospam@isy.liu.se>
Date: Thu, 27 Nov 2008 08:36:37 +0000 (UTC)
Links: << >>  << T >>  << A >>
On 2008-11-27, Robert <Robert.Blank@gmx.at> wrote:
> Hi
>
> I am aware of the fact, that "implementing" a cache on an FPGA is not 
> really compareable to a real cache. Anyway, in my architecture I wanna
> have such a kind of memory hierarchy with RAM and a Cache. So I wonder 
> if I can realise a N-Way Set Associative cache on an FPGA? Obviously it 
> should use the BRAM for the memory ressources as I just have around 5000
> slices on my device. Maybe someone can point me out to an example where 
> someone has tried to do such a FPGA implementation!

This is of course possible (assuming N is around 2-4 or so). You can look
at the sourcecode of for example Mico32 to find some examples if I remember
correctly.

However, I have not found any good information about how to really optimize
a cache for an FPGA (and I have looked around a bit). If anyone knows of a
good paper about optimizing caches for FPGAs I would be quite interested in
that.

/Andreas

Article: 136633
Subject: Re: Infer Dual Port Block ROM for Xilinx FPGA
From: Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
Date: Thu, 27 Nov 2008 09:28:42 +0000 (UTC)
Links: << >>  << T >>  << A >>
Sudhir.Singh@email.com wrote:
> Hi Guys,
> I am trying to figure out a way to infer dual port ROM using BRAM on
> Xilinx FPGAs. Documentation shows how to infer single port ROMs but
> couldn't find any info on dual port.
> Any info on this will be greatly appreciaied.

A look in .../Xilinx/10.1/ISE/doc/usenglish/books/docs/xst/xst.pdf might
also help.  

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

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

Article: 136634
Subject: Re: opencores can core
From: Jeremy Bennett <jeremy.bennett@embecosm.com>
Date: Thu, 27 Nov 2008 03:34:18 -0600
Links: << >>  << T >>  << A >>
On Mon, 24 Nov 2008 09:25:50 -0800, osquillar wrote:

> Hello all, does anyone any experience using the opb2wb bridge and the
> can core from opencores?.
> I've already installed the opb2wb bridge in  xilinx edk but I would like
> to know how to interface the can core with this opb2wb bridge. Once this
> bridge is installed I would like how to work with this bridge.

You might try asking this question on the OpenCores mailing list 
(cores@opencores.org). I believe the cores are originally from asics.ws, 
so you could always pay for some support from them...

HTH,


Jeremy


Article: 136635
Subject: Re: added jitter on FPGAs
From: Kolja Sulimma <ksulimma@googlemail.com>
Date: Thu, 27 Nov 2008 01:57:19 -0800 (PST)
Links: << >>  << T >>  << A >>
On 26 Nov., 19:05, palvarez <pabloalvarezsanc...@gmail.com> wrote:
> For several reasons a need very low jitter on some of my outputs. I
> was thinking of using LVDS for my I/Os and of course I do not consider
> using a clock manager. Do you have an idea of the order of magnitude
> of jitter one can get? What fpga would you recomend for a low cost
> small design?

You have quite a lot of jitter inside an FPGA. We see on the order of
300ps jitter
at the output of an Spartan-3 driven by an output flip-flop with a
clock driven by a BUFG driven by a DCM.

Using the Virtex-5 PLL you should get less jitter. The best Jitter
should have an output that uses a regional clock input routed via a
BUFIO.

Kolja Sulimma

Article: 136636
Subject: Caches & FPGAs
From: Robert <Robert.Blank@gmx.at>
Date: Thu, 27 Nov 2008 10:50:19 +0000
Links: << >>  << T >>  << A >>
Hi

I am aware of the fact, that "implementing" a cache on an FPGA is not 
really compareable to a real cache. Anyway, in my architecture I wanna
have such a kind of memory hierarchy with RAM and a Cache. So I wonder 
if I can realise a N-Way Set Associative cache on an FPGA? Obviously it 
should use the BRAM for the memory ressources as I just have around 5000
slices on my device. Maybe someone can point me out to an example where 
someone has tried to do such a FPGA implementation!

Thanks for your help in advance,
Robert

Article: 136637
Subject: Altera ethernetblaster problem
From: oopere <me@somewhere.net>
Date: Thu, 27 Nov 2008 13:09:16 +0100
Links: << >>  << T >>  << A >>
I am trying to set up my ethernetblaster and having some problems.

When I tried the autodetect feature, it worked ok. However, I typed no 
password and the connection status was "authentication failure". This 
was expected.

What was not expected is that I cannot change the password. I also 
cannot "remove server" because this button appears shaded!

Next, I set up the ethernetblaster server on another IP address, and 
tried to connect providing the correct password. In the "currently 
selected hardware", and indication of the server appears but when I 
close the "Hardware setup" window, the programmer still keeps saying "No 
hardware" in the top line.

I suspect that if I could remove the "bad" server (actually, now I have 
even 2 of them, with a fake one showing "connecting..." all the time) I 
could try again but this seems impossible.

Any hints?

Pere

Article: 136638
Subject: Re: Caches & FPGAs
From: Jon Beniston <jon@beniston.com>
Date: Thu, 27 Nov 2008 05:35:01 -0800 (PST)
Links: << >>  << T >>  << A >>
> I am aware of the fact, that "implementing" a cache on an FPGA is not
> really compareable to a real cache.

What makes you say that? The current crop of FPGA CPUs don't have
multilevel caches, but otherwise they are very similar to the caches
you would find in older CPUs.

Cheers,
Jon

Article: 136639
Subject: Re: added jitter on FPGAs
From: "Symon" <symon_brewer@hotmail.com>
Date: Thu, 27 Nov 2008 15:40:55 -0000
Links: << >>  << T >>  << A >>
Hi Kolja,

"Kolja Sulimma" <ksulimma@googlemail.com> wrote in message 
news:a48f4020-7f8a-4ce8-949a-e27397d7a370@q9g2000yqc.googlegroups.com...
>
> Using the Virtex-5 PLL you should get less jitter.

Maybe. Maybe not. I do not believe that "PLLs always reduce the jitter 
inherent on a reference clock." even though Xilinx claim this rubbish in 
their V5 user guide. (UG190 (v4.3) pg.91). Here's a counter-example.
http://www.edn.com/contents/images/6475013.pdf

Whatever, the OP's question is too vague to meaningfully answer. He fails to 
indicate what frequency of jitter he is interested in. Jitter is generally 
defined from 10Hz upwards, but often 1UI of jitter at 10Hz is 
inconsequential, but 1UI at 10MHz probably will be a bother.

FWIW, common sources of noise which will produce jitter include power supply 
noise, SSOs, other clocks in the design. Trying to stop these coupling into 
the outputs when they are all present on a single FPGA may be difficult.

> The best Jitter
> should have an output that uses a regional clock input routed via a
> BUFIO.
>

I agree. I believe these resources are driven differentially and so will 
probably have better immunity to noise sources. For even better performance 
it may be necessary to retime the signals outside of the FPGA.

HTH., Syms. 



Article: 136640
Subject: Re: timer interrupt problem: microblaze
From: bish <bisheshkh@gmail.com>
Date: Thu, 27 Nov 2008 09:08:44 -0800 (PST)
Links: << >>  << T >>  << A >>
On Nov 27, 6:14=A0am, Bryan <bryan.fletc...@avnet.com> wrote:
> Not sure what the problem is with your code. =A0Here's an example with
> one timer. =A0It's 10.1, but there weren't any changes in the interrupt
> stuff between 9.2 and 10.1 (so I'm told). =A0This is based on a lab from
> one of Avnet's Speedway trainings. =A0I ran it on the Xilinx Spartan-3A
> DSP 1800A Starter and verified that the interrupts are indeed
> happening. =A0There is a bit file in the project directory if you don't
> want to rebuild the project.
>
> Bryan
>
> The following file has been made available for you to download from
> Avnet's File Transfer web site:http://xfer.avnet.com/uploads/Xil3S1800ADS=
P_Interrupt_v10.1.03.zip

I downloaded the timer_interrupt.bit file into FPGA using impact, the
timer example worked FINE.
It generated the required output and interrrupt was working. BUT

I could not use the system.xmp present in
http://xfer.avnet.com/uploads/Xil3S1800ADSP_Interrupt_v10.1.03.zip
because
I have edk 9.2i, but it was developed with later version of edk.

And here is the mysterious problem yet to be solved!!
So I developed a base system and used xps interrupt controller and
timer. The MHS file is:


#
###########################################################################=
###
# Created by Base System Builder Wizard for Xilinx EDK 9.2 Build
EDK_Jm.16
# Sun Nov 16 21:24:15 2008
# Target Board:  Xilinx Spartan-3A DSP 1800A Starter Board Rev 1
# Family:	 spartan3adsp
# Device:	 xc3sd1800a
# Package:	 fg676
# Speed Grade:	 -4
# Processor: microblaze_0
# System clock frequency: 62.000000 MHz
# On Chip Memory :   8 KB
#
###########################################################################=
###
 PARAMETER VERSION =3D 2.1.0


 PORT fpga_0_RS232_Uart_1_RX_pin =3D fpga_0_RS232_Uart_1_RX, DIR =3D I
 PORT fpga_0_RS232_Uart_1_TX_pin =3D fpga_0_RS232_Uart_1_TX, DIR =3D O
 PORT sys_clk_pin =3D dcm_clk_s, DIR =3D I, SIGIS =3D CLK, CLK_FREQ =3D
125000000
 PORT sys_rst_pin =3D sys_rst_s, DIR =3D I, RST_POLARITY =3D 0, SIGIS =3D R=
ST
 PORT dip_GPIO_in_pin =3D dip_GPIO_in, DIR =3D I, VEC =3D [0:7]
 PORT push_GPIO_in_pin =3D push_GPIO_in, DIR =3D I, VEC =3D [0:3]
 PORT led_GPIO_IO_pin =3D led_GPIO_IO, DIR =3D IO, VEC =3D [0:7]


BEGIN microblaze
 PARAMETER HW_VER =3D 7.00.a
 PARAMETER INSTANCE =3D microblaze_0
 PARAMETER C_INTERCONNECT =3D 1
 PARAMETER C_DEBUG_ENABLED =3D 1
 PARAMETER C_AREA_OPTIMIZED =3D 1
 BUS_INTERFACE DLMB =3D dlmb
 BUS_INTERFACE ILMB =3D ilmb
 BUS_INTERFACE DPLB =3D mb_plb
 BUS_INTERFACE IPLB =3D mb_plb
 BUS_INTERFACE DEBUG =3D microblaze_0_dbg
 PORT RESET =3D mb_reset
 PORT INTERRUPT =3D Interrupt
END

BEGIN plb_v46
 PARAMETER INSTANCE =3D mb_plb
 PARAMETER HW_VER =3D 1.00.a
 PORT PLB_Clk =3D sys_clk_s
 PORT SYS_Rst =3D sys_bus_reset
END

BEGIN lmb_v10
 PARAMETER INSTANCE =3D ilmb
 PARAMETER HW_VER =3D 1.00.a
 PORT LMB_Clk =3D sys_clk_s
 PORT SYS_Rst =3D sys_bus_reset
END

BEGIN lmb_v10
 PARAMETER INSTANCE =3D dlmb
 PARAMETER HW_VER =3D 1.00.a
 PORT LMB_Clk =3D sys_clk_s
 PORT SYS_Rst =3D sys_bus_reset
END

BEGIN lmb_bram_if_cntlr
 PARAMETER INSTANCE =3D dlmb_cntlr
 PARAMETER HW_VER =3D 2.10.a
 PARAMETER C_BASEADDR =3D 0x00000000
 PARAMETER C_HIGHADDR =3D 0x00003fff
 BUS_INTERFACE SLMB =3D dlmb
 BUS_INTERFACE BRAM_PORT =3D dlmb_port
END

BEGIN lmb_bram_if_cntlr
 PARAMETER INSTANCE =3D ilmb_cntlr
 PARAMETER HW_VER =3D 2.10.a
 PARAMETER C_BASEADDR =3D 0x00000000
 PARAMETER C_HIGHADDR =3D 0x00003fff
 BUS_INTERFACE SLMB =3D ilmb
 BUS_INTERFACE BRAM_PORT =3D ilmb_port
END

BEGIN bram_block
 PARAMETER INSTANCE =3D lmb_bram
 PARAMETER HW_VER =3D 1.00.a
 BUS_INTERFACE PORTA =3D ilmb_port
 BUS_INTERFACE PORTB =3D dlmb_port
END

BEGIN xps_uartlite
 PARAMETER INSTANCE =3D RS232_Uart_1
 PARAMETER HW_VER =3D 1.00.a
 PARAMETER C_BAUDRATE =3D 115200
 PARAMETER C_ODD_PARITY =3D 0
 PARAMETER C_USE_PARITY =3D 0
 PARAMETER C_SPLB_CLK_FREQ_HZ =3D 62500000
 PARAMETER C_BASEADDR =3D 0x84000000
 PARAMETER C_HIGHADDR =3D 0x8400ffff
 BUS_INTERFACE SPLB =3D mb_plb
 PORT RX =3D fpga_0_RS232_Uart_1_RX
 PORT TX =3D fpga_0_RS232_Uart_1_TX
END

BEGIN clock_generator
 PARAMETER INSTANCE =3D clock_generator_0
 PARAMETER HW_VER =3D 1.00.a
 PARAMETER C_EXT_RESET_HIGH =3D 1
 PARAMETER C_CLKIN_FREQ =3D 125000000
 PARAMETER C_CLKOUT0_FREQ =3D 62500000
 PARAMETER C_CLKOUT0_PHASE =3D 0
 PARAMETER C_CLKOUT0_GROUP =3D NONE
 PORT CLKOUT0 =3D sys_clk_s
 PORT CLKIN =3D dcm_clk_s
 PORT LOCKED =3D Dcm_all_locked
 PORT RST =3D net_gnd
END

BEGIN mdm
 PARAMETER INSTANCE =3D debug_module
 PARAMETER HW_VER =3D 1.00.a
 PARAMETER C_MB_DBG_PORTS =3D 1
 PARAMETER C_USE_UART =3D 1
 PARAMETER C_UART_WIDTH =3D 8
 PARAMETER C_BASEADDR =3D 0x84400000
 PARAMETER C_HIGHADDR =3D 0x8440ffff
 BUS_INTERFACE SPLB =3D mb_plb
 BUS_INTERFACE MBDEBUG_0 =3D microblaze_0_dbg
 PORT Debug_SYS_Rst =3D Debug_SYS_Rst
END

BEGIN proc_sys_reset
 PARAMETER INSTANCE =3D proc_sys_reset_0
 PARAMETER HW_VER =3D 2.00.a
 PARAMETER C_EXT_RESET_HIGH =3D 0
 PORT Slowest_sync_clk =3D sys_clk_s
 PORT Dcm_locked =3D Dcm_all_locked
 PORT Ext_Reset_In =3D sys_rst_s
 PORT MB_Reset =3D mb_reset
 PORT Bus_Struct_Reset =3D sys_bus_reset
 PORT MB_Debug_Sys_Rst =3D Debug_SYS_Rst
END

BEGIN xps_gpio
 PARAMETER INSTANCE =3D push
 PARAMETER HW_VER =3D 1.00.a
 PARAMETER C_GPIO_WIDTH =3D 4
 PARAMETER C_ALL_INPUTS =3D 1
 PARAMETER C_IS_BIDIR =3D 0
 PARAMETER C_BASEADDR =3D 0x8141c200
 PARAMETER C_HIGHADDR =3D 0x8141c3ff
 BUS_INTERFACE SPLB =3D mb_plb
 PORT GPIO_in =3D push_GPIO_in
END

BEGIN xps_gpio
 PARAMETER INSTANCE =3D dip
 PARAMETER HW_VER =3D 1.00.a
 PARAMETER C_GPIO_WIDTH =3D 8
 PARAMETER C_ALL_INPUTS =3D 1
 PARAMETER C_IS_BIDIR =3D 0
 PARAMETER C_BASEADDR =3D 0x81420000
 PARAMETER C_HIGHADDR =3D 0x8142ffff
 BUS_INTERFACE SPLB =3D mb_plb
 PORT GPIO_in =3D dip_GPIO_in
END

BEGIN xps_gpio
 PARAMETER INSTANCE =3D led
 PARAMETER HW_VER =3D 1.00.a
 PARAMETER C_GPIO_WIDTH =3D 8
 PARAMETER C_IS_BIDIR =3D 0
 PARAMETER C_BASEADDR =3D 0x81400000
 PARAMETER C_HIGHADDR =3D 0x8140ffff
 BUS_INTERFACE SPLB =3D mb_plb
 PORT GPIO_IO =3D led_GPIO_IO
END

BEGIN xps_timer
 PARAMETER INSTANCE =3D xps_timer_0
 PARAMETER HW_VER =3D 1.00.a
 PARAMETER C_BASEADDR =3D 0x81418000
 PARAMETER C_HIGHADDR =3D 0x814181ff
 PARAMETER C_ONE_TIMER_ONLY =3D 1
 BUS_INTERFACE SPLB =3D mb_plb
 PORT Interrupt =3D xps_timer_0_Interrupt
END

BEGIN xps_intc
 PARAMETER INSTANCE =3D xps_intc_0
 PARAMETER HW_VER =3D 1.00.a
 PARAMETER C_BASEADDR =3D 0x81414000
 PARAMETER C_HIGHADDR =3D 0x814141ff
 BUS_INTERFACE SPLB =3D mb_plb
 PORT Irq =3D Interrupt
 PORT Intr =3D xps_timer_0_Interrupt
END

In xps_intc I have connected only timer interrupt to its Intr pin and
other interrupts like
from push buttons and other are NOT CONNECTED.
Then I used "timer.c" provided in the link (I have not used external
DDR2 SDRAM), and the result:

Starting Timer example
Timer example FAILED

So, I am really confused here!!


>
> Click on the hyperlink or enter this URL into your web browser to
> retrieve the file.
> This file will remain on the server for approximately 5 days from the
> date of the upload at which time it will be deleted. =A0Please be sure
> to download it before the expiration time.
> This file will expire on Dec =A01, 2008.
>
> File Size: 232357 Bytes
>
> On Nov 26, 12:22=A0am, bish <bishes...@gmail.com> wrote:
>
>
>
> > On Nov 26, 4:58=A0am, David <simianfe...@gmail.com> wrote:
>
> > > On Nov 26, 2:37=A0am, bish <bishes...@gmail.com> wrote:
>
> > > > On Nov 25, 12:25=A0pm, Matthias Alles <REMOVEallesCAPIT...@NOeit.SP=
AMuni-
>
> > > > kl.de> wrote:
> > > > > Hi!
>
> > > > > I wonder, whether "one_second_flag" is declared as volatile? If n=
ot, the
> > > > > compiler optimizes your if-statement in the while(1) loop away. Y=
ou can
> > > > > check this by using mb-objdump.
>
> > > > I tried using the volatile for one_second_flag, still it does not
> > > > work. It just prints "the value of count =3D 1" once in terminal an=
d
> > > > nothing happens then.
>
> > > > > Cheers,
> > > > > Matthias
>
> > > > > bish schrieb:
>
> > > > > > I am trying to use a timer for regular interrupt in microblaze.=
 I am
> > > > > > using edk 9.2i and spartan 3a dsp 1800a.
> > > > > > Even following a simple lab example widely used by beginners di=
dn't
> > > > > > work:http://users.utcluj.ro/~baruch/ssce/labor/EDK-L5-e.pdf
>
> > > > > > I have connected all the interrupt ports correctly as evident f=
rom the
> > > > > > following portion of the mhs file:
> > > > > > BEGIN microblaze
> > > > > > =A0PARAMETER HW_VER =3D 7.00.a
> > > > > > ...........
> > > > > > ...........
> > > > > > PORT INTERRUPT =3D interrupt
> > > > > > END
>
> > > > > > BEGIN xps_timer
> > > > > > =A0PARAMETER INSTANCE =3D delay
> > > > > > =A0PARAMETER HW_VER =3D 1.00.a
> > > > > > =A0PARAMETER C_ONE_TIMER_ONLY =3D 1
> > > > > > =A0PARAMETER C_BASEADDR =3D 0x8141c200
> > > > > > =A0PARAMETER C_HIGHADDR =3D 0x8141c3ff
> > > > > > =A0BUS_INTERFACE SPLB =3D mb_plb
> > > > > > =A0PORT Interrupt =3D timer1
> > > > > > =A0PORT CaptureTrig0 =3D net_gnd
> > > > > > END
>
> > > > > > BEGIN xps_intc
> > > > > > =A0PARAMETER INSTANCE =3D xps_intc_0
> > > > > > =A0PARAMETER HW_VER =3D 1.00.a
> > > > > > =A0PARAMETER C_BASEADDR =3D 0x81418000
> > > > > > =A0PARAMETER C_HIGHADDR =3D 0x814181ff
> > > > > > =A0BUS_INTERFACE SPLB =3D mb_plb
> > > > > > =A0PORT Irq =3D interrupt
> > > > > > =A0PORT Intr =3D timer1
> > > > > > END
>
> > > > > > Now for the software settings since I am using edk 9.2i, it doe=
s not
> > > > > > have option for registering our interrupt handler in software p=
latform
> > > > > > settings window (which is what the lab suggests), I used the
> > > > > > microblaze_register_handler(...) function ( I took me 3 days to=
 figure
> > > > > > out this), =A0but I still don't get how it works differently fr=
om the
> > > > > > function XIntc_RegisterHandler.
> > > > > > The portion of C file is as follows:
> > > > > > void timer_int_handler(void * baseaddr_p) {
> > > > > > =A0 =A0 /* Add variable declarations here */
> > > > > > =A0 =A0unsigned int csr;
> > > > > > =A0 =A0/* Read timer 0 CSR to see if it raised the interrupt */
> > > > > > =A0 =A0csr =3D XTmrCtr_mGetControlStatusReg(XPAR_DELAY_BASEADDR=
,0);
> > > > > > =A0 =A0/* If the interrupt occurred, then increment a counter *=
/
> > > > > > =A0 =A0/* and set one_second_flag to 1 */
> > > > > > =A0 =A0if (csr & XTC_CSR_INT_OCCURED_MASK ) {
> > > > > > =A0 =A0 =A0 =A0 =A0 =A0count ++;
> > > > > > =A0 =A0 =A0 =A0 =A0 =A0one_second_flag =3D 1;
> > > > > > =A0 =A0}
>
> > > > > > =A0 =A0/* Display the count on the LEDs */
> > > > > > =A0 =A0XGpio_mSetDataReg(XPAR_LED_HIGHADDR, LEDChan, count);
>
> > > > > > =A0 =A0/* Print the count using the UART*/
> > > > > > =A0 =A0xil_printf("count value is: %x\n\r", count);
> > > > > > =A0 =A0/* Clear the timer interrupt */
> > > > > > =A0 =A0XTmrCtr_mSetControlStatusReg(XPAR_DELAY_BASEADDR,0,csr);
> > > > > > }
>
> > > > > > int main() {
>
> > > > > > =A0 int count_mod_3;
>
> > > > > > =A0 //registering an interrupt handler
> > > > > > =A0 microblaze_register_handler((XInterruptHandler) timer_int_h=
andler,
> > > > > > (void *)0);
>
> > > > > > =A0 /* Register the Timer interrupt handler in the vector table=
 */
> > > > > > =A0 XIntc_RegisterHandler(XPAR_XPS_INTC_0_BASEADDR,
> > > > > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0XPAR=
_XPS_INTC_0_DELAY_INTERRUPT_INTR,
> > > > > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(XIn=
terruptHandler) timer_int_handler,
> > > > > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(voi=
d *)XPAR_DELAY_BASEADDR);
> > > > > > =A0 /* Enable MicroBlaze Interrupts */
> > > > > > =A0 microblaze_enable_interrupts();
>
> > > > > > =A0 /* Initialize and set the direction of the GPIO connected t=
o LEDs */
> > > > > > =A0 XGpio_Initialize(&gpio, XPAR_LED_DEVICE_ID);
> > > > > > =A0 XGpio_SetDataDirection(&gpio,LEDChan, 0);
>
> > > > > > =A0 /* Start the interrupt controller */
> > > > > > =A0 XIntc_mMasterEnable(XPAR_XPS_INTC_0_BASEADDR);
> > > > > > =A0 XIntc_mEnableIntr(XPAR_XPS_INTC_0_BASEADDR, 0x1);
>
> > > > > > =A0 /* Set the gpio as output on high 8 bits (LEDs)*/
> > > > > > =A0 XGpio_mSetDataReg(XPAR_LED_DEVICE_ID,LEDChan, ~count);
> > > > > > =A0 xil_printf("The value of count =3D %d\n\r", count);
>
> > > > > > =A0 /* Set the number of cycles the timer counts before interru=
pting */
> > > > > > =A0 XTmrCtr_mSetLoadReg(XPAR_DELAY_BASEADDR, 0,
> > > > > > (timer_count*timer_count) * 50000000);
>
> > > > > > =A0 /* Reset the timers, and clear interrupts */
> > > > > > =A0 XTmrCtr_mSetControlStatusReg(XPAR_DELAY_BASEADDR, 0,
> > > > > > XTC_CSR_INT_OCCURED_MASK | XTC_CSR_LOAD_MASK );
>
> > > > > > =A0 /* Enable timer interrupts in the interrupt controller */
> > > > > > =A0 XIntc_mEnableIntr(XPAR_DELAY_BASEADDR, XPAR_DELAY_INTERRUPT=
_MASK);
>
> > > > > > =A0 /* Start the timers */
> > > > > > =A0 XTmrCtr_mSetControlStatusReg(XPAR_DELAY_BASEADDR, 0,
> > > > > > XTC_CSR_ENABLE_TMR_MASK | XTC_CSR_ENABLE_INT_MASK |
> > > > > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 =A0XTC_CSR_AUTO_RELOAD_MASK | XTC_CSR_DOWN_COUNT_MASK)=
;
>
> > > > > > =A0 /* Wait for interrupts to occur */
> > > > > > =A0 while(1) {
> > > > > > =A0 =A0if(one_second_flag){
> > > > > > =A0 =A0 =A0 =A0 =A0 =A0count_mod_3 =3D count % 3;
> > > > > > =A0 =A0 =A0 =A0 =A0 =A0if(count_mod_3 =3D=3D 0)
> > > > > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0xil_printf("Interrupt ta=
ken at %d seconds \n\r",count);
> > > > > > =A0 =A0 =A0 =A0 =A0 =A0one_second_flag=3D0;
> > > > > > =A0 =A0 =A0 =A0 =A0 =A0xil_printf(".");
> > > > > > =A0 =A0 =A0 =A0 =A0 =A0}
> > > > > > =A0 =A0}
> > > > > > }
>
> > > > > > When I run the system, the value of count does not change from =
1. What
> > > > > > could be the problem?- Hide quoted text -
>
> > > > > - Show quoted text -
>
> > > Hello,
>
> > > Here is how I set up a timer interrupt in 9.2:
>
> > > void TimerCounterHandler(void *CallBackRef)
> > > {
> > > =A0 =A0 =A0 =A0 print("timer interrupt ");
>
> > > }
>
> > > Int main (void) {
>
> > > =A0 =A0 =A0 =A0 XIntc intr_ctrl;
> > > =A0 =A0 =A0 =A0 XTmrCtr timr;
>
> > > =A0 =A0 =A0 =A0 XIntc_Initialize(&intr_ctrl,XPAR_XPS_INTC_0_DEVICE_ID=
);
> > > =A0 =A0 =A0 =A0 XTmrCtr_Initialize(&timr,XPAR_XPS_TIMER_1_DEVICE_ID);
>
> > > =A0 =A0 =A0 =A0 XIntc_Connect(&intr_ctrl, XPAR_XPS_INTC_0_XPS_TIMER_1=
_INTERRUPT_INTR,
> > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(XInterruptHan=
dler)
> > > XTmrCtr_InterruptHandler,
> > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(void *)&timr)=
;
>
> > > =A0 =A0 =A0 =A0 XIntc_Start(&intr_ctrl, XIN_REAL_MODE);
>
> > > =A0 =A0 =A0 =A0 XIntc_Enable(&intr_ctrl, XPAR_XPS_INTC_0_XPS_TIMER_1_=
INTERRUPT_INTR);
>
> > > =A0 =A0 =A0 =A0 XTmrCtr_SetHandler(&timr, (void *)TimerCounterHandler=
, void);
>
> > This issued an error so I replaced void with NULL in the third
> > argument above. Apart from that I didn't change anything, but still
> > the terminal never printed "timer interrupt" so still the problem
> > remains!!
>
> > > =A0 =A0 =A0 =A0 XTmrCtr_SetOptions(&timr, 0,
> > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0XTC_INT_MODE_OPTION | =
XTC_AUTO_RELOAD_OPTION);
>
> > > =A0 =A0 =A0 =A0 XTmrCtr_SetResetValue(&timr, 0, 0xF0000000);
>
> > > =A0 =A0 =A0 =A0 XTmrCtr_Start(&timr,0);
>
> > > =A0 =A0 =A0 =A0 microblaze_enable_interrupts();
>
> > > =A0 =A0 =A0 =A0while(1){
> > > =A0 =A0 =A0 //wait for interrupts
> > > =A0 =A0 =A0 }
>
> > > }
>
> > > If you are using the Intc component, you no longer need to use the
> > > microblaze_register_handler function - instead use the XIntc_Connect(=
)
> > > function.
> > > The XTmrCtr driver provides its own interrupt handler
> > > XTmrCtr_InterruptHandler() which you should use to service the
> > > interrupt. =A0It will issue a callback to a function of your choice (=
set
> > > with XTmrCtr_SetHandler)
>
> > > Hope this helps,
>
> > > David- Hide quoted text -
>
> > > - Show quoted text -- Hide quoted text -
>
> > - Show quoted text -- Hide quoted text -
>
> > - Show quoted text -- Hide quoted text -
>
> - Show quoted text -


Article: 136641
Subject: Re: timer interrupt problem: microblaze
From: bish <bisheshkh@gmail.com>
Date: Thu, 27 Nov 2008 09:24:05 -0800 (PST)
Links: << >>  << T >>  << A >>
On Nov 27, 10:08=A0pm, bish <bishes...@gmail.com> wrote:
> On Nov 27, 6:14=A0am, Bryan <bryan.fletc...@avnet.com> wrote:
>
> > Not sure what the problem is with your code. =A0Here's an example with
> > one timer. =A0It's 10.1, but there weren't any changes in the interrupt
> > stuff between 9.2 and 10.1 (so I'm told). =A0This is based on a lab fro=
m
> > one of Avnet's Speedway trainings. =A0I ran it on the Xilinx Spartan-3A
> > DSP 1800A Starter and verified that the interrupts are indeed
> > happening. =A0There is a bit file in the project directory if you don't
> > want to rebuild the project.
>
> > Bryan
>
> > The following file has been made available for you to download from
> > Avnet's File Transfer web site:http://xfer.avnet.com/uploads/Xil3S1800A=
DSP_Interrupt_v10.1.03.zip
>
> I downloaded the timer_interrupt.bit file into FPGA using impact, the
> timer example worked FINE.
> It generated the required output and interrrupt was working. BUT
>
> I could not use the system.xmp present inhttp://xfer.avnet.com/uploads/Xi=
l3S1800ADSP_Interrupt_v10.1.03.zip
> because
> I have edk 9.2i, but it was developed with later version of edk.
>
> And here is the mysterious problem yet to be solved!!
> So I developed a base system and used xps interrupt controller and
> timer. The MHS file is:
>
> #
> #########################################################################=
##=AD###
> # Created by Base System Builder Wizard for Xilinx EDK 9.2 Build
> EDK_Jm.16
> # Sun Nov 16 21:24:15 2008
> # Target Board: =A0Xilinx Spartan-3A DSP 1800A Starter Board Rev 1
> # Family: =A0 =A0 =A0 =A0spartan3adsp
> # Device: =A0 =A0 =A0 =A0xc3sd1800a
> # Package: =A0 =A0 =A0 fg676
> # Speed Grade: =A0 -4
> # Processor: microblaze_0
> # System clock frequency: 62.000000 MHz
> # On Chip Memory : =A0 8 KB
> #
> #########################################################################=
##=AD###
> =A0PARAMETER VERSION =3D 2.1.0
>
> =A0PORT fpga_0_RS232_Uart_1_RX_pin =3D fpga_0_RS232_Uart_1_RX, DIR =3D I
> =A0PORT fpga_0_RS232_Uart_1_TX_pin =3D fpga_0_RS232_Uart_1_TX, DIR =3D O
> =A0PORT sys_clk_pin =3D dcm_clk_s, DIR =3D I, SIGIS =3D CLK, CLK_FREQ =3D
> 125000000
> =A0PORT sys_rst_pin =3D sys_rst_s, DIR =3D I, RST_POLARITY =3D 0, SIGIS =
=3D RST
> =A0PORT dip_GPIO_in_pin =3D dip_GPIO_in, DIR =3D I, VEC =3D [0:7]
> =A0PORT push_GPIO_in_pin =3D push_GPIO_in, DIR =3D I, VEC =3D [0:3]
> =A0PORT led_GPIO_IO_pin =3D led_GPIO_IO, DIR =3D IO, VEC =3D [0:7]
>
> BEGIN microblaze
> =A0PARAMETER HW_VER =3D 7.00.a
> =A0PARAMETER INSTANCE =3D microblaze_0
> =A0PARAMETER C_INTERCONNECT =3D 1
> =A0PARAMETER C_DEBUG_ENABLED =3D 1
> =A0PARAMETER C_AREA_OPTIMIZED =3D 1
> =A0BUS_INTERFACE DLMB =3D dlmb
> =A0BUS_INTERFACE ILMB =3D ilmb
> =A0BUS_INTERFACE DPLB =3D mb_plb
> =A0BUS_INTERFACE IPLB =3D mb_plb
> =A0BUS_INTERFACE DEBUG =3D microblaze_0_dbg
> =A0PORT RESET =3D mb_reset
> =A0PORT INTERRUPT =3D Interrupt
> END
>
> BEGIN plb_v46
> =A0PARAMETER INSTANCE =3D mb_plb
> =A0PARAMETER HW_VER =3D 1.00.a
> =A0PORT PLB_Clk =3D sys_clk_s
> =A0PORT SYS_Rst =3D sys_bus_reset
> END
>
> BEGIN lmb_v10
> =A0PARAMETER INSTANCE =3D ilmb
> =A0PARAMETER HW_VER =3D 1.00.a
> =A0PORT LMB_Clk =3D sys_clk_s
> =A0PORT SYS_Rst =3D sys_bus_reset
> END
>
> BEGIN lmb_v10
> =A0PARAMETER INSTANCE =3D dlmb
> =A0PARAMETER HW_VER =3D 1.00.a
> =A0PORT LMB_Clk =3D sys_clk_s
> =A0PORT SYS_Rst =3D sys_bus_reset
> END
>
> BEGIN lmb_bram_if_cntlr
> =A0PARAMETER INSTANCE =3D dlmb_cntlr
> =A0PARAMETER HW_VER =3D 2.10.a
> =A0PARAMETER C_BASEADDR =3D 0x00000000
> =A0PARAMETER C_HIGHADDR =3D 0x00003fff
> =A0BUS_INTERFACE SLMB =3D dlmb
> =A0BUS_INTERFACE BRAM_PORT =3D dlmb_port
> END
>
> BEGIN lmb_bram_if_cntlr
> =A0PARAMETER INSTANCE =3D ilmb_cntlr
> =A0PARAMETER HW_VER =3D 2.10.a
> =A0PARAMETER C_BASEADDR =3D 0x00000000
> =A0PARAMETER C_HIGHADDR =3D 0x00003fff
> =A0BUS_INTERFACE SLMB =3D ilmb
> =A0BUS_INTERFACE BRAM_PORT =3D ilmb_port
> END
>
> BEGIN bram_block
> =A0PARAMETER INSTANCE =3D lmb_bram
> =A0PARAMETER HW_VER =3D 1.00.a
> =A0BUS_INTERFACE PORTA =3D ilmb_port
> =A0BUS_INTERFACE PORTB =3D dlmb_port
> END
>
> BEGIN xps_uartlite
> =A0PARAMETER INSTANCE =3D RS232_Uart_1
> =A0PARAMETER HW_VER =3D 1.00.a
> =A0PARAMETER C_BAUDRATE =3D 115200
> =A0PARAMETER C_ODD_PARITY =3D 0
> =A0PARAMETER C_USE_PARITY =3D 0
> =A0PARAMETER C_SPLB_CLK_FREQ_HZ =3D 62500000
> =A0PARAMETER C_BASEADDR =3D 0x84000000
> =A0PARAMETER C_HIGHADDR =3D 0x8400ffff
> =A0BUS_INTERFACE SPLB =3D mb_plb
> =A0PORT RX =3D fpga_0_RS232_Uart_1_RX
> =A0PORT TX =3D fpga_0_RS232_Uart_1_TX
> END
>
> BEGIN clock_generator
> =A0PARAMETER INSTANCE =3D clock_generator_0
> =A0PARAMETER HW_VER =3D 1.00.a
> =A0PARAMETER C_EXT_RESET_HIGH =3D 1
> =A0PARAMETER C_CLKIN_FREQ =3D 125000000
> =A0PARAMETER C_CLKOUT0_FREQ =3D 62500000
> =A0PARAMETER C_CLKOUT0_PHASE =3D 0
> =A0PARAMETER C_CLKOUT0_GROUP =3D NONE
> =A0PORT CLKOUT0 =3D sys_clk_s
> =A0PORT CLKIN =3D dcm_clk_s
> =A0PORT LOCKED =3D Dcm_all_locked
> =A0PORT RST =3D net_gnd
> END
>
> BEGIN mdm
> =A0PARAMETER INSTANCE =3D debug_module
> =A0PARAMETER HW_VER =3D 1.00.a
> =A0PARAMETER C_MB_DBG_PORTS =3D 1
> =A0PARAMETER C_USE_UART =3D 1
> =A0PARAMETER C_UART_WIDTH =3D 8
> =A0PARAMETER C_BASEADDR =3D 0x84400000
> =A0PARAMETER C_HIGHADDR =3D 0x8440ffff
> =A0BUS_INTERFACE SPLB =3D mb_plb
> =A0BUS_INTERFACE MBDEBUG_0 =3D microblaze_0_dbg
> =A0PORT Debug_SYS_Rst =3D Debug_SYS_Rst
> END
>
> BEGIN proc_sys_reset
> =A0PARAMETER INSTANCE =3D proc_sys_reset_0
> =A0PARAMETER HW_VER =3D 2.00.a
> =A0PARAMETER C_EXT_RESET_HIGH =3D 0
> =A0PORT Slowest_sync_clk =3D sys_clk_s
> =A0PORT Dcm_locked =3D Dcm_all_locked
> =A0PORT Ext_Reset_In =3D sys_rst_s
> =A0PORT MB_Reset =3D mb_reset
> =A0PORT Bus_Struct_Reset =3D sys_bus_reset
> =A0PORT MB_Debug_Sys_Rst =3D Debug_SYS_Rst
> END
>
> BEGIN xps_gpio
> =A0PARAMETER INSTANCE =3D push
> =A0PARAMETER HW_VER =3D 1.00.a
> =A0PARAMETER C_GPIO_WIDTH =3D 4
> =A0PARAMETER C_ALL_INPUTS =3D 1
> =A0PARAMETER C_IS_BIDIR =3D 0
> =A0PARAMETER C_BASEADDR =3D 0x8141c200
> =A0PARAMETER C_HIGHADDR =3D 0x8141c3ff
> =A0BUS_INTERFACE SPLB =3D mb_plb
> =A0PORT GPIO_in =3D push_GPIO_in
> END
>
> BEGIN xps_gpio
> =A0PARAMETER INSTANCE =3D dip
> =A0PARAMETER HW_VER =3D 1.00.a
> =A0PARAMETER C_GPIO_WIDTH =3D 8
> =A0PARAMETER C_ALL_INPUTS =3D 1
> =A0PARAMETER C_IS_BIDIR =3D 0
> =A0PARAMETER C_BASEADDR =3D 0x81420000
> =A0PARAMETER C_HIGHADDR =3D 0x8142ffff
> =A0BUS_INTERFACE SPLB =3D mb_plb
> =A0PORT GPIO_in =3D dip_GPIO_in
> END
>
> BEGIN xps_gpio
> =A0PARAMETER INSTANCE =3D led
> =A0PARAMETER HW_VER =3D 1.00.a
> =A0PARAMETER C_GPIO_WIDTH =3D 8
> =A0PARAMETER C_IS_BIDIR =3D 0
> =A0PARAMETER C_BASEADDR =3D 0x81400000
> =A0PARAMETER C_HIGHADDR =3D 0x8140ffff
> =A0BUS_INTERFACE SPLB =3D mb_plb
> =A0PORT GPIO_IO =3D led_GPIO_IO
> END
>
> BEGIN xps_timer
> =A0PARAMETER INSTANCE =3D xps_timer_0
> =A0PARAMETER HW_VER =3D 1.00.a
> =A0PARAMETER C_BASEADDR =3D 0x81418000
> =A0PARAMETER C_HIGHADDR =3D 0x814181ff
> =A0PARAMETER C_ONE_TIMER_ONLY =3D 1
> =A0BUS_INTERFACE SPLB =3D mb_plb
> =A0PORT Interrupt =3D xps_timer_0_Interrupt
> END
>
> BEGIN xps_intc
> =A0PARAMETER INSTANCE =3D xps_intc_0
> =A0PARAMETER HW_VER =3D 1.00.a
> =A0PARAMETER C_BASEADDR =3D 0x81414000
> =A0PARAMETER C_HIGHADDR =3D 0x814141ff
> =A0BUS_INTERFACE SPLB =3D mb_plb
> =A0PORT Irq =3D Interrupt
> =A0PORT Intr =3D xps_timer_0_Interrupt
> END
>
> In xps_intc I have connected only timer interrupt to its Intr pin and
> other interrupts like
> from push buttons and other are NOT CONNECTED.

In the configure ip.. option for xps interrupt controller I could not
change the no. of interrupt inputs (by default it is 2), as it is set
to 2 and disabled.
So I used two timers and connected interrupt pins of these timers to
interrupt controller just make intr inputs 2. Then again I checked
with the "timer.c" file from the link, and still the same result:
Timer example failed !!!

This has already taken so many days and problem is becoming more
mysterious (but frustrating)!!!
> Then I used "timer.c" provided in the link (I have not used external
> DDR2 SDRAM), and the result:
>
> Starting Timer example
> Timer example FAILED
>
> So, I am really confused here!!
>
>
>
>
>
> > Click on the hyperlink or enter this URL into your web browser to
> > retrieve the file.
> > This file will remain on the server for approximately 5 days from the
> > date of the upload at which time it will be deleted. =A0Please be sure
> > to download it before the expiration time.
> > This file will expire on Dec =A01, 2008.
>
> > File Size: 232357 Bytes
>
> > On Nov 26, 12:22=A0am, bish <bishes...@gmail.com> wrote:
>
> > > On Nov 26, 4:58=A0am, David <simianfe...@gmail.com> wrote:
>
> > > > On Nov 26, 2:37=A0am, bish <bishes...@gmail.com> wrote:
>
> > > > > On Nov 25, 12:25=A0pm, Matthias Alles <REMOVEallesCAPIT...@NOeit.=
SPAMuni-
>
> > > > > kl.de> wrote:
> > > > > > Hi!
>
> > > > > > I wonder, whether "one_second_flag" is declared as volatile? If=
 not, the
> > > > > > compiler optimizes your if-statement in the while(1) loop away.=
 You can
> > > > > > check this by using mb-objdump.
>
> > > > > I tried using the volatile for one_second_flag, still it does not
> > > > > work. It just prints "the value of count =3D 1" once in terminal =
and
> > > > > nothing happens then.
>
> > > > > > Cheers,
> > > > > > Matthias
>
> > > > > > bish schrieb:
>
> > > > > > > I am trying to use a timer for regular interrupt in microblaz=
e. I am
> > > > > > > using edk 9.2i and spartan 3a dsp 1800a.
> > > > > > > Even following a simple lab example widely used by beginners =
didn't
> > > > > > > work:http://users.utcluj.ro/~baruch/ssce/labor/EDK-L5-e.pdf
>
> > > > > > > I have connected all the interrupt ports correctly as evident=
 from the
> > > > > > > following portion of the mhs file:
> > > > > > > BEGIN microblaze
> > > > > > > =A0PARAMETER HW_VER =3D 7.00.a
> > > > > > > ...........
> > > > > > > ...........
> > > > > > > PORT INTERRUPT =3D interrupt
> > > > > > > END
>
> > > > > > > BEGIN xps_timer
> > > > > > > =A0PARAMETER INSTANCE =3D delay
> > > > > > > =A0PARAMETER HW_VER =3D 1.00.a
> > > > > > > =A0PARAMETER C_ONE_TIMER_ONLY =3D 1
> > > > > > > =A0PARAMETER C_BASEADDR =3D 0x8141c200
> > > > > > > =A0PARAMETER C_HIGHADDR =3D 0x8141c3ff
> > > > > > > =A0BUS_INTERFACE SPLB =3D mb_plb
> > > > > > > =A0PORT Interrupt =3D timer1
> > > > > > > =A0PORT CaptureTrig0 =3D net_gnd
> > > > > > > END
>
> > > > > > > BEGIN xps_intc
> > > > > > > =A0PARAMETER INSTANCE =3D xps_intc_0
> > > > > > > =A0PARAMETER HW_VER =3D 1.00.a
> > > > > > > =A0PARAMETER C_BASEADDR =3D 0x81418000
> > > > > > > =A0PARAMETER C_HIGHADDR =3D 0x814181ff
> > > > > > > =A0BUS_INTERFACE SPLB =3D mb_plb
> > > > > > > =A0PORT Irq =3D interrupt
> > > > > > > =A0PORT Intr =3D timer1
> > > > > > > END
>
> > > > > > > Now for the software settings since I am using edk 9.2i, it d=
oes not
> > > > > > > have option for registering our interrupt handler in software=
 platform
> > > > > > > settings window (which is what the lab suggests), I used the
> > > > > > > microblaze_register_handler(...) function ( I took me 3 days =
to figure
> > > > > > > out this), =A0but I still don't get how it works differently =
from the
> > > > > > > function XIntc_RegisterHandler.
> > > > > > > The portion of C file is as follows:
> > > > > > > void timer_int_handler(void * baseaddr_p) {
> > > > > > > =A0 =A0 /* Add variable declarations here */
> > > > > > > =A0 =A0unsigned int csr;
> > > > > > > =A0 =A0/* Read timer 0 CSR to see if it raised the interrupt =
*/
> > > > > > > =A0 =A0csr =3D XTmrCtr_mGetControlStatusReg(XPAR_DELAY_BASEAD=
DR,0);
> > > > > > > =A0 =A0/* If the interrupt occurred, then increment a counter=
 */
> > > > > > > =A0 =A0/* and set one_second_flag to 1 */
> > > > > > > =A0 =A0if (csr & XTC_CSR_INT_OCCURED_MASK ) {
>
> ...
>
> read more =BB- Hide quoted text -
>
> - Show quoted text -


Article: 136642
Subject: Re: FMC/VITA 57
From: Mike Monett <None@here.adr>
Date: Thu, 27 Nov 2008 19:32:52 +0000
Links: << >>  << T >>  << A >>
paas <pabloalvarezsanchez@gmail.com> wrote:

> On 24 nov, 18:31, John Doe <j...@usenetlove.invalid> wrote:
>> palvarez <pabloalvarezsanchez gmail.com> wrote:
>> > <snipped spam>
>> > What do you think?
>>
>> I think you are just another Google Groups cross-posting spammer,
>> especially considering this is your only post to USENET.
> 
> I am just using google groups as I could have used any other news
> reader. I do not know what is wrong with it.

John Doe is a troll. Ignore him. I plonked him long ago. 

Your post is on-topic and valuable. Thanks for the heads up.

Mike Monett



Article: 136643
Subject: help! how to pipeline a non-restoring divider in verilog
From: jinyinglu@gmail.com
Date: Thu, 27 Nov 2008 12:19:08 -0800 (PST)
Links: << >>  << T >>  << A >>
I finish the verilog coding for a non-restoring divider based gate
level. but I don't know how to pipeline it.

Could anyone help me out. thanks a lot
Jane

Article: 136644
Subject: Re: help! how to pipeline a non-restoring divider in verilog
From: Muzaffer Kal <kal@dspia.com>
Date: Thu, 27 Nov 2008 13:32:06 -0800
Links: << >>  << T >>  << A >>
On Thu, 27 Nov 2008 12:19:08 -0800 (PST), jinyinglu@gmail.com wrote:

>I finish the verilog coding for a non-restoring divider based gate
>level. but I don't know how to pipeline it.

Assuming you this is what you have:

module divider(dividend, divisor, quotient);

input ... dividend, divisor;
output ... quotient;

wire ... partial1 = f(dividend, divisor);
...

wire partial2 = f(partial1, divisor);
...
endmodule

then you can just make partial remainders registers for pipeline:

reg ... partial1, partial2, ...;

always @(posedge clk)
   partial1 <= f(dividend, divisor);

always @(posedge clk)
   partial2 <= f(partial2, divisor);

Of course you have to remember to calculate the individual bits of the
quotient correctly based on your delayed partial remainders.

Hope this helps.

Muzaffer Kal

DSPIA INC.
ASIC/FPGA Design Services
http://www.dspia.com

Article: 136645
Subject: Re: help! how to pipeline a non-restoring divider in verilog
From: jinyinglu@gmail.com
Date: Thu, 27 Nov 2008 15:55:28 -0800 (PST)
Links: << >>  << T >>  << A >>
On Nov 27, 1:32=A0pm, Muzaffer Kal <k...@dspia.com> wrote:
> On Thu, 27 Nov 2008 12:19:08 -0800 (PST), jinyin...@gmail.com wrote:
> >I finish the verilog coding for a non-restoring divider based gate
> >level. but I don't know how to pipeline it.
>
> Assuming you this is what you have:
>
> module divider(dividend, divisor, quotient);
>
> input ... dividend, divisor;
> output ... quotient;
>
> wire ... partial1 =3D f(dividend, divisor);
> ...
>
> wire partial2 =3D f(partial1, divisor);
> ...
> endmodule
>
> then you can just make partial remainders registers for pipeline:
>
> reg ... partial1, partial2, ...;
>
> always @(posedge clk)
> =A0 =A0partial1 <=3D f(dividend, divisor);
>
> always @(posedge clk)
> =A0 =A0partial2 <=3D f(partial2, divisor);
>
> Of course you have to remember to calculate the individual bits of the
> quotient correctly based on your delayed partial remainders.
>
> Hope this helps.
>
> Muzaffer Kal
>
> DSPIA INC.
> ASIC/FPGA Design Serviceshttp://www.dspia.com

Let me try. Thanks a lot. happy thanks giving.

Article: 136646
Subject: Re: Infer Dual Port Block ROM for Xilinx FPGA
From: Sudhir.Singh@email.com
Date: Thu, 27 Nov 2008 16:58:45 -0800 (PST)
Links: << >>  << T >>  << A >>
On Nov 27, 10:28=A0pm, Uwe Bonnes <b...@elektron.ikp.physik.tu-
darmstadt.de> wrote:
> Sudhir.Si...@email.com wrote:
> > Hi Guys,
> > I am trying to figure out a way to infer dual port ROM using BRAM on
> > Xilinx FPGAs. Documentation shows how to infer single port ROMs but
> > couldn't find any info on dual port.
> > Any info on this will be greatly appreciaied.
>
> A look in .../Xilinx/10.1/ISE/doc/usenglish/books/docs/xst/xst.pdf might
> also help. =A0
>
> --
> Uwe Bonnes =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0b...@elektron.ikp.physik.tu-dar=
mstadt.de
>
> Institut fuer Kernphysik =A0Schlossgartenstrasse 9 =A064289 Darmstadt
> --------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------


Thanks for your help guys.

Cheers
Sudhir

Article: 136647
Subject: Dithering video signals
From: Martin Sauer <msau@displaign.de>
Date: Fri, 28 Nov 2008 06:35:08 +0100
Links: << >>  << T >>  << A >>
Hi,

I want to dither rgb-video signals with a Lattice ECP2 FPGA and I don't 
have any idea how I should do this. Can you give me some tips for this 
problem. Is there are a free ip-core available?

Thank you for your answer.

bye

martin sauer

Article: 136648
Subject: Re: FMC/VITA 57
From: colin <colin_toogood@yahoo.com>
Date: Thu, 27 Nov 2008 23:32:48 -0800 (PST)
Links: << >>  << T >>  << A >>
On 24 Nov, 16:34, palvarez <pabloalvarezsanc...@gmail.com> wrote:
> Hi,
>
> Have you had a look at the new FMC standard (VITA 57)? It looks
> extremely promising as nowadays many designs are based on a simple
> FPGA with variations on the front pannel. =A0Sofar I have only seen FMC
> developments for high perfomance plataforms based on Virtex5, but I
> feel that a great benefit would appear when using a flexible low
> budget carrier with flexible low cost front pannels.
>
> Check this article for quick intro to VITA 57
>
> http://www.vmecritical.com/articles/id/?3575
>
> What do you think?
>
> Cheers
>
> pablo

You can get the pinout from Xilinx, they use it on a dev board.
However, I've been trying to get the proper spec from VITA for ages
but it hasn't been formerly released yet. Presumably VMETRO & Xilinx
are VITA members and have a pre-release.

Colin

Article: 136649
Subject: Re: Infer Dual Port Block ROM for Xilinx FPGA
From: Alain <no_spa2005@yahoo.fr>
Date: Fri, 28 Nov 2008 00:22:43 -0800 (PST)
Links: << >>  << T >>  << A >>
Hello,

The only way I've found to infer a dual ROM memory is to describe a
dual RAM memory. Write Enable signal is a port of the entity and
connect to '0' at the upper level. I've already informed Xilinx about
this problem but I've got no answer.
Anyway, it's a great advantage to have dual ROM memory : simply divide
the number of Block RAM by 2 !

Best regards

ibrary ieee;
  use ieee.std_logic_1164.all;
  use ieee.numeric_std.all;

entity Dual_Block_ROM is
  port(XGSR    : in  std_logic;
       CLK     : in  std_logic;
       WE_Null : in  std_logic;
       Adr     : in  std_logic_vector(19 downto 0);
       Dout    : out std_logic_vector(19 downto 0));
end Dual_Block_ROM;

architecture BEHV of Dual_Block_ROM is

  type Tab_std_vector10  is array (integer range <>) of
std_logic_vector(9 downto 0);
  signal Tab_ROM : Tab_std_vector10(0 to 1023):=
    ("0000000011","0010000110"," ...
");

  signal Dout_ROM : std_logic_vector(19 downto 0);

begin

  g_Dual_ROM: for i in 0 to 1 generate
    Dout_ROM_proc: process(CLK)
    begin
      if rising_edge(CLK) then
          if (WE_Null='1') then -- Unused
            Tab_ROM(To_Integer(unsigned(std_logic_vector'(Adr(10*i+9
downto 10*i))))) <= (others => '0');
          end if;
          Dout_ROM(10*i+9 downto 10*i) <= Tab_ROM(To_Integer(unsigned
(std_logic_vector'(Adr(10*i+9 downto 10*i)))));
      end if;
    end process Dout_ROM_proc;
  end generate g_Dual_ROM;

  Dout_proc: process(XGSR,CLK)
  begin
    if (XGSR='1') then
      Dout <= (others => '0');
    elsif rising_edge(CLK) then
      Dout <= Dout_ROM;
    end if;
  end process Dout_proc;

end BEHV;
...
entity Top_Dual_Block_ROM is
  port(XGSR    : in  std_logic;
       CLK     : in  std_logic;
       Adra    : in  std_logic_vector(19 downto 0);
       Douta   : out std_logic_vector(19 downto 0));
end Top_Dual_Block_ROM;

architecture BEHV of Top_Dual_Block_ROM is

  component Dual_Block_ROM
  port(XGSR    : in  std_logic;
  ...
begin

  C_Dual_Block_ROM: Dual_Block_ROM
  port map(
    XGSR    => XGSR,
    WE_Null => '0',
    CLK     => CLK,
    Adr     => Adra,
    Dout    => Douta);

end BEHV;





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