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
2019JanFebMar2019

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 128600

Article: 128600
Subject: Re: PC requirements for ISE webpack
From: Uwe Bonnes <bon@hertz.ikp.physik.tu-darmstadt.de>
Date: Thu, 31 Jan 2008 16:39:36 +0000 (UTC)
Links: << >>  << T >>  << A >>
posedge52@yahoo.com wrote:
> On 31 Jan, 00:01, Uwe Bonnes <b...@hertz.ikp.physik.tu-darmstadt.de>
> wrote:
> > If you run on anything non-Redhat/Windows, be prepared to get the answer
> > "Not a supported platform" all the time :-(
> > for every problem you report/webcase you open, as unrelated to any
> > distribution the problem can be. It takes persistance to get Xilinx
> > first level support to realize the problem...

> So far I have solved problems without help from Xilinx. And should it
> be needed one can always employ helpdesk engineering :)

Beside the silly use of WinDriver, I also have no real problems when running
on Linux/Suse. And with Michaels work
http://www.rmdir.de/~michael/xilinx
there is no more need for WinDriver to run Impact.
 
-- 
Uwe Bonnes                bon@elektron.ikp.physik.tu-darmstadt.de

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

Article: 128601
Subject: Xpower
From: Charles Wagner <charles.wagner@irisa.fr>
Date: Thu, 31 Jan 2008 17:44:12 +0100
Links: << >>  << T >>  << A >>
Hi All,

I am trying to see the power consumption of some design using XPower 
with ModelSim generated .vcd file

I get this message :
WARNING:Power:1087 - Can't change frequency of net clk to 100.00Mhz
It sets the clock frequency automatically to 10 MHz irrespective of what 
I use in my simulation.


Is it a problem related to the option that I used to generate the VCD 
file? Anybody got same experience?

Thanks,

Charles

Article: 128602
Subject: Re: new to NIOS II
From: ghelbig@lycos.com
Date: Thu, 31 Jan 2008 09:21:40 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 30, 7:47 pm, Amit <amit.ko...@gmail.com> wrote:
> Hello group,
>
> Recently I have started to learn NIOS. I will appreciate it if
> somebody knows any good online resource or book that I can use.
>
> Thanks,
> Amit

Have you tried a google search?  My one search on the subject got
17,400 hits, and a good weeks worth of reading/learning on the 1st
page of hits.

G.

Article: 128603
Subject: Re: FPGA in Telecommunications
From: Alex Colvin <alexc@TheWorld.com>
Date: Thu, 31 Jan 2008 17:32:20 +0000 (UTC)
Links: << >>  << T >>  << A >>

>I am curious what are main applications of FPGA in
>Telecommunications?

one application is in wavelength switching.

A routing label comes in on a common wavelength, followed by a packet on a
designated wavelength. An FPGA decodes the routing label, looks up the
destination, and sets an optical router so the packet goes to the right
link. This requires the FPGA to respond while the packet is in flight, 
before it hits the optical switch.
-- 
	mac the naf

Article: 128604
Subject: Re: FPGA in Telecommunications
From: "RCIngham" <robert.ingham@gmail.com>
Date: Thu, 31 Jan 2008 11:59:03 -0600
Links: << >>  << T >>  << A >>
>
>I am curious what are main applications of FPGA in Telecommunications?
>

Just guessing, but these days anything in the fixed infrastructure part of
the network that used to be done in ASICs, which are now only viable for
the hand-sets.


Article: 128605
Subject: Re: Design security for pre-Virtex2 parts ?
From: "RCIngham" <robert.ingham@gmail.com>
Date: Thu, 31 Jan 2008 12:01:54 -0600
Links: << >>  << T >>  << A >>
>Hi all,
>
>Has anyone ever tried to improve the security for the old Xilinx FPGA
>devices, which doesn't have the 3-DES encryption?  If so what's the
>feasible approach ?  So far I have no clue
>
>TIA,
>

I am not a Xilinx expert, but I think the answer is "cannot be done". Use
something else if you don't want the bitstream snooped upon.


Article: 128606
Subject: Re: new to NIOS II
From: MikeShepherd564@btinternet.com
Date: Thu, 31 Jan 2008 18:11:30 +0000
Links: << >>  << T >>  << A >>
>> Recently I have started to learn NIOS. I will appreciate it if
>> somebody knows any good online resource or book that I can use.

>Have you tried a google search?  My one search on the subject got
>17,400 hits, and a good weeks worth of reading/learning on the 1st
>page of hits.

After that, he can try the copious Nios documentation (free on the
Altera web site).

Then there's the Nios forum:  http://www.niosforum.com/

If that isn't enough, give up.

Article: 128607
Subject: Re: PC requirements for ISE webpack
From: Duane Clark <junkmail@junkmail.com>
Date: Thu, 31 Jan 2008 10:13:31 -0800
Links: << >>  << T >>  << A >>
HT-Lab wrote:
> "Uwe Bonnes" <bon@hertz.ikp.physik.tu-darmstadt.de> wrote
>> If you run on anything non-Redhat/Windows, be prepared to get the answer
>> "Not a supported platform" all the time :-(
> 
> Unfortunately that seem to apply to most EDA tools. I would recommend to use 
> one of the Redhat clones like CentOS/WhiteBox/StarCom assuming of course you 
> can't afford to buy a Redhat EL license.

Well, if you can afford the EDA tools (and if you are getting support, 
then you probably paid for them), then I think you can afford REL ;)

But that said, I think that you will not have problems on other 
platforms with most tools. I run all kinds of EDA tools on Fedora 7 
without problems. Well, ok, I will have to admit I have not gotten 
Impact to work yet, even with Michael's Windriver replacement. And Aldec 
at least does not care that I am using F7 when I need support.

Article: 128608
Subject: question about fsl and microblaze
From: "u_stadler@yahoo.de" <u_stadler@yahoo.de>
Date: Thu, 31 Jan 2008 10:36:18 -0800 (PST)
Links: << >>  << T >>  << A >>
hi

i'm just working on a project where i need to create an fsl interface
for my custom ip core. i used the "create and import" peripheral
wizard from the edk.
the wizard gives me the following options to choose from : "number of
input/output 32 bit words" and two pages later "number of input
arguments".  whats the difference between those two things? when i
look into the driver and vhdl code i still get 1 32 bit bus. the only
thing is that depending on the values i choose the driver template for
example creates one variable "input_0" (which in case of 8 32 bit
input words and 1 input argument" is an array of 8.
is there any speed advantage of creating a large array or is it better
to create more input arguments. when i look at the selftest source
code the macro is called for every entry of the array anyway.....
or did i misunderstand something here?


thanks
urban

Article: 128609
Subject: Low Pin Count (LPC) bus code available?
From: johnp <johnp3+nospam@probo.com>
Date: Thu, 31 Jan 2008 10:41:57 -0800 (PST)
Links: << >>  << T >>  << A >>
I'm working on a Low Pin Count (LPC) bus interface and would like to
double check my design with an existing implementation.  Does anyone
have an existing design they could share?  Verilog source would be
great.

The LPC bus is a protocol developed by Intel to supplant the ISA bus.

Thanks!

John Providenza

Article: 128610
Subject: Re: iru1209 regulator
From: Dave Pollum <vze24h5m@verizon.net>
Date: Thu, 31 Jan 2008 10:45:53 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 31, 9:47 am, waltherz <walther.za...@gmx.de> wrote:
> Hello all,
>
> i have a design finished a few month ago, that is working fine on a
> xc2s200-pq208, but when i port it to a xc3s400-tq144, it ain't work
> most of the time (depends on the synthesis process) even with lowest
> frequencies for a single clock and a given period constraint.
>
> Now, i wonder, if this is due to wrong regulators. Are there any other
> good guys here, using those?
> (If yes, please, tell me Package and Size of Fpga too. :-)
>
> much thanks in advance
> walther

I don't know what you mean by "wrong regulators".  You do know that
the S2 (Spartan II) power supply voltages are not the same as the S3
(Spartan 3) power voltages, don't you?  For example, the S2's Vccint
is 2.5v and the S3's Vccint is 1.2v.  Check the Xilinx web site for
documentation.

-Dave Pollum



Article: 128611
Subject: Re: I need a SDRAM controller
From: "Dwayne Dilbeck" <ddilbeck@yahoo.com>
Date: Thu, 31 Jan 2008 10:53:52 -0800
Links: << >>  << T >>  << A >>
Multiple port memories come down to scheduling issues.  On occasions  you 
may need multiple modules to access the same memory at the same time.  If 
you only have a single port, one of the modules will have to stall until the 
memory is available.  If these modules are frequently in contention, your 
performance goes right out the window.  Thus a memory that has multiple 
ports.  Multiple ports allow  simultanious access to the memory.  Less 
contention. Better performance.

"merche" <dorama2@gmail.com> wrote in message 
news:ae3f9b08-ed83-4feb-a79f-6077709ca9b7@k2g2000hse.googlegroups.com...
thanks a lot, im looking the controller on these page and its seem
easy to understand. Other thing,
why for a dual port to SDRAM controller? i suppose its faster. 



Article: 128612
Subject: Re: Design security for pre-Virtex2 parts ?
From: Ed McGettigan <ed.mcgettigan@xilinx.com>
Date: Thu, 31 Jan 2008 10:57:00 -0800
Links: << >>  << T >>  << A >>
RCIngham wrote:
>> Hi all,
>>
>> Has anyone ever tried to improve the security for the old Xilinx FPGA
>> devices, which doesn't have the 3-DES encryption?  If so what's the
>> feasible approach ?  So far I have no clue
>>
>> TIA,
>>
> 
> I am not a Xilinx expert, but I think the answer is "cannot be done". Use
> something else if you don't want the bitstream snooped upon.
> 
Actually there are alternatives using external and/or internal features.
This is marketing piece, but informative on the subject:
http://www.xilinx.com/publications/prod_mktg/DesignSecurity_ssht.pdf

And this white paper describes how to implement a CipherStream protocol:
http://www.xilinx.com/support/documentation/white_papers/wp197.pdf

An application note for copy protection using a secure EEPROM:
http://www.xilinx.com/support/documentation/application_notes/xapp780.pdf

And this landing page holds a whole lot more on this subject:
http://www.xilinx.com/products/design_resources/security/

Ed McGettigan
--
Xilinx Inc.

Article: 128613
Subject: Re: Design security for pre-Virtex2 parts ?
From: "Dwayne Dilbeck" <ddilbeck@yahoo.com>
Date: Thu, 31 Jan 2008 11:00:02 -0800
Links: << >>  << T >>  << A >>
Use a drop in replacement.  The security hole is snooping the bitstream.
www.quicklogic.com has drop in replacements.  You program once at the 
factory and then you don't have to worry about snooping done out in the 
field.

If you need to reprogram the fpga at the customer site, and are worried 
about the security. You will need to go with the newer chips.


"Marlboro" <ccon67@netscape.net> wrote in message 
news:a385b5f2-c073-4d3e-9890-efa5baa8b2cb@k39g2000hsf.googlegroups.com...
> Hi all,
>
> Has anyone ever tried to improve the security for the old Xilinx FPGA
> devices, which doesn't have the 3-DES encryption?  If so what's the
> feasible approach ?  So far I have no clue
>
> TIA, 



Article: 128614
Subject: Re: I need a SDRAM controller
From: John Retta <jretta@rtc-inc.com>
Date: Thu, 31 Jan 2008 12:12:42 -0700
Links: << >>  << T >>  << A >>
About the following code :

[1] Verilog, not VHDL. But treat it as a reference design.
[2] DRAM controllers are not especially daunting.
     Yes ... the data sheets are large, but the actual
     functions that need to occur (initialization,
     write block, read blocks, and refresh cycles) are
     pretty limited, and well documented.
  [3] What is a challenge is getting the parts (more an
     issue with the later DDR devices, and yet speedier
     interfaces) to run at higher speeds.  I have not
     used ACTEL, but Xilinx has IOB FFs that are the
     secret to running at high clock rates.
  [4] This design is largely uncommented, and
      undocumented.  But it is free, and like I said can
      be used as a design reference.
  [5] When you are debugging .... if you have an easy
      way to write/read blocks and verify data, then
      use it, ie an embedded processor.  Otherwise,
      try to build a test block around your block,
      which initiates a write block, then verifies
      with a read block, and then allows you to
      view (??) the read back data.  If this were
      a Xilinx design, chipscope is a good candidate
      to view read back data.  Otherwise, you may need
      to add a uart to your code, and some logic to
      dump read back data to RS232 port.

-- 

Regards,
John Retta
Owner and Designer
Retta Technical Consulting Inc.

Colorado Based Xilinx Consultant

phone : 303.926.0068
email : jretta@rtc-inc.com
web   :  www.rtc-inc.com

> module tb_tx_dram_ctl (
>   clk_ad9857_pd_drate,
>   clk_ad9857_pd_drate_stable,
>   clk_33mhz,
>   ck_pci_reset_n,                 
> 
>   pci_dc_start_add_ld,
>   pci_dc_block_cnt_ld,
>   pci_dc_sdram_fifo_ld,
>   pci_dc_sdram_fifo_rdnxt,
>   pci_dc_sdram_wrdata,
>   dc_pci_sdram_rddata,
>   dc_pci_init_done,
>   dc_pci_block_write_done,
>   dc_pci_block_rd_done,
>              
>   dc_xt_sdram_ras, 
>   dc_xt_sdram_cas, 
>   dc_xt_sdram_we, 
>   dc_xt_sdram_cke,
>   dc_xt_sdram_so_n,   
>   dc_xt_sdram_dqmb,
>   dc_xt_sdram_ba,
>   dc_xt_sdram_a,    
>   dc_sdram_dq_outen_n, 
>   dc_xt_sdram_dq_out, 
>   xt_dc_sdram_dq_in,
>   dram_debug,
>   
>   dc_du_wr_next_line,
>   dc_du_next_line_data,
>   dc_du_reset_gnb,
>   du_dc_get_next_blk,  
>   du_dc_blk_size,
>   du_dc_blk_start_add,
>   dc_pci_set_blkxfer_int,
>   
>   dc_pci_debug_1,
>   dc_pci_debug_2,
>   debug_write_last
> 
>   );
> 
>   input         clk_ad9857_pd_drate;
>   input         clk_ad9857_pd_drate_stable; 
>   input         clk_33mhz;
>   input         ck_pci_reset_n;                 
>   input         pci_dc_start_add_ld;
>   input         pci_dc_block_cnt_ld;
>   input         pci_dc_sdram_fifo_ld;
>   input         pci_dc_sdram_fifo_rdnxt;
>   input  [31:0] pci_dc_sdram_wrdata;
>   output [31:0] dc_pci_sdram_rddata;
>   output        dc_pci_init_done;
>   output        dc_pci_block_write_done;
>   output        dc_pci_block_rd_done;
> 
>   output        dc_xt_sdram_ras, dc_xt_sdram_cas, dc_xt_sdram_we; 
>   output [1:0]  dc_xt_sdram_cke;   // static
>   output [3:0]  dc_xt_sdram_so_n;   
>   output [7:0]  dc_xt_sdram_dqmb;  // static
>   output [1:0]  dc_xt_sdram_ba;
>   output [12:0] dc_xt_sdram_a;    
>   output        dc_sdram_dq_outen_n; 
>   output [63:0] dc_xt_sdram_dq_out; 
>   input  [63:0] xt_dc_sdram_dq_in;
>   
>   output [47:0] dram_debug;
>   
>   output         dc_du_wr_next_line;
>   output  [63:0] dc_du_next_line_data;
>   output         dc_du_reset_gnb;
>   input          du_dc_get_next_blk; 
>   input   [7:0]  du_dc_blk_size;
>   input   [29:0] du_dc_blk_start_add;
>   output         dc_pci_set_blkxfer_int;
>   output  [31:0] dc_pci_debug_1;
>   output  [31:0] dc_pci_debug_2;
>   output         debug_write_last;
>   
>   parameter DLY_7US_AT_PDCLK = 9'h15E;
> 
>   // **************************************************************************
>   // wire and reg Defs
>   // **************************************************************************
>   reg [31:0] dc_pci_sdram_rddata;
>   reg        block_write_done, block_read_done;
>   reg        dc_pci_init_done, dc_pci_block_rd_done;
>   reg        fifo_room_for_40h_q, decrement_by_40_on_read; 
>   reg  [2:0] blk_read_sequence_q;
>   reg        end_of_read_blk_handle_q;  
>   
>   reg  [1:0] bwr_done_q, brd_done_q;
>   wire       bwr_done_led = ~bwr_done_q[1] & bwr_done_q[0];
>   reg        clr_dram_afc;
>   reg [63:0] sdram_fifo_drport_wr_data;
>   reg  [7:0] pipeline_rddata_val_q;  
>   reg  [3:0] dc_xt_sdram_so_n;
>   reg        dc_xt_sdram_ras;
>   reg        dc_xt_sdram_cas;
>   reg        dc_xt_sdram_we;
>   reg  [1:0] dc_xt_sdram_ba;
>   reg [12:0] dc_xt_sdram_a;
>   
>   reg        pci_read_block_req;
>   reg        pci_write_block_rdy;
>   reg [29:3] sdram_start_address_reg;
>   reg        pci_block_write_read_n;
>   reg  [8:0] pci_port_add_ctr;
>   reg [10:0] pci_block_transfer_ctr, pci_dword_fetch_ctr;
>   reg  [8:0] sdram_block_transfer_ctr;
>   reg  [7:0] sdram_fifo_drport_add_ctr;
>   reg [31:0] pci_low32_hr, pci_upper32_hr;
>   
>   reg   [3:0] sdram_256mb_id;
>   reg   [1:0] sdram_ba;
>   reg  [12:0] sdram_a;
>   reg   [3:0] dram_ctl;
>   reg  [12:0] dram_delay_ctr;
>   reg   [5:0] dram_seq_state;
>   reg   [7:0] dram_loopcnt;
>   reg         dram_ctl_wr_blk_done;
>   wire        sblk_xfer_cnt_dec;
>   reg         pipeline_rddata_val;
>   reg         dc_sdram_dq_outen_n;  
>   reg         dram_iq_semaphore;  
>   wire        sdram_fifo_pci_wr = pci_dc_sdram_fifo_ld & pci_port_add_ctr[0];
>   wire [63:0] sdram_fifo_wr_data = {pci_dc_sdram_wrdata[31:0], pci_low32_hr};
>   wire [63:0] sdram_fifo_rd_data;
>   wire [63:0] sdram_fifo_drport_rd_data;
>   wire        sblk_xfer_cnt_tc = (sdram_block_transfer_ctr == 9'h001);
>   
>   assign     dc_xt_sdram_cke     = 2'b11;
>   assign     dc_xt_sdram_dqmb    = 8'b0000_0000;
>   assign     dc_xt_sdram_dq_out  = sdram_fifo_drport_rd_data;
> 
> reg        dram_afc_tc_q;
> reg  [8:0] dram_auto_refresh_ctr;
> wire       dram_auto_refresh_ctr_tc = (dram_auto_refresh_ctr == DLY_7US_AT_PDCLK);
> 
> reg         get_next_blk_q, dc_du_wr_next_line, dc_du_reset_gnb;
> reg  [63:0] dc_du_next_line_data;
> reg  [29:3] iq_unpack_start_address_reg;
> reg   [7:0] iq_unpack_block_transfer_ctr;
> reg         fifo_room_for_40h;
> reg   [1:0] dec_by_40_on_read_q;
> 
> wire        get_next_blk_led      = ~get_next_blk_q & du_dc_get_next_blk;
> wire        iq_unpack_xfer_cnt_tc = (iq_unpack_block_transfer_ctr == 8'h01);
> 
> reg  [47:0] dram_debug;
>   
> // ********************************************************************
> //  SDRAM Interface Signals
> // ********************************************************************
> 
> always @(posedge clk_ad9857_pd_drate)
>   begin
>     dc_xt_sdram_so_n          <= ~({4{~dram_ctl[3]}} & sdram_256mb_id);
>     dc_xt_sdram_ras           <= dram_ctl[2];
>     dc_xt_sdram_cas           <= dram_ctl[1];
>     dc_xt_sdram_we            <= dram_ctl[0];
>     dc_xt_sdram_ba            <= sdram_ba;
>     dc_xt_sdram_a             <= sdram_a;
>     dc_sdram_dq_outen_n       <= (|pipeline_rddata_val_q[5:0]);
>   end
>   
> // ********************************************************************
> //  33 Mhz Domain
> // ********************************************************************
> reg [31:0] local_pci_dat_hr;
> reg        pci_dc_start_add_ld_q, pci_dc_block_cnt_ld_q;
> reg        pci_mode_blk_wr_rd_n;
> reg        ld_last_word_of_xfer_q, ld_modulo_40_word_q, pci_inc_block_ctr_q;
> reg  [6:0] pci_dwrd_ctr;
> reg  [1:0] sdram_block_read_done_q, sdram_block_write_done_q; 
> reg  [1:0] pci_blkxer_ctr_tc_q; 
> reg        dc_pci_set_blkxfer_int;
> reg  [6:0] pci_40_dword_detect_ctr;
> 
> wire       pci_blkxer_ctr_tc_q_led = ~pci_blkxer_ctr_tc_q[1] & pci_blkxer_ctr_tc_q[0];
> 
> wire local_pci_hr_wr      = pci_dc_start_add_ld | pci_dc_block_cnt_ld;
> wire pci_wr_rd_cycle      = pci_block_write_read_n & pci_dc_sdram_fifo_ld | ~pci_block_write_read_n & pci_dc_sdram_fifo_rdnxt;
> wire ld_last_word_of_xfer = ((pci_block_transfer_ctr == 11'h001) & pci_dc_sdram_fifo_ld);
> wire ld_mod_40_word_on_write = ((pci_port_add_ctr[6:0] == 7'h7F)   & pci_dc_sdram_fifo_ld);
> wire ld_mod_40_word_on_read  = blk_read_sequence_q[0] & (pci_dword_fetch_ctr[10:0] >= 11'h040);
> wire ld_modulo_40_word       = ld_mod_40_word_on_write | ld_mod_40_word_on_read;
>                              
>                              
> wire ld_last_blk_of_read_xfer = blk_read_sequence_q[0] & (pci_dword_fetch_ctr[10:0] < 11'h040);
> wire start_of_read_seq     = pci_dc_block_cnt_ld & ~pci_dc_sdram_wrdata[30];
> wire initiate_blk_read     = start_of_read_seq | (end_of_read_blk_handle_q & ~(pci_dword_fetch_ctr == 11'h000));
> wire sdram_blk_rd_done_led = ~sdram_block_read_done_q[1]  & sdram_block_read_done_q[0];
> wire sdram_blk_wr_done_led = ~sdram_block_write_done_q[1] & sdram_block_write_done_q[0];
> 
> assign  dc_pci_block_write_done = sdram_blk_wr_done_led;
> 
>  always @(posedge clk_33mhz)
>    begin
>      dc_pci_sdram_rddata      <= ~pci_port_add_ctr[0] ? pci_upper32_hr : sdram_fifo_rd_data[31:0];
>      pci_block_write_read_n   <= pci_dc_block_cnt_ld ? pci_dc_sdram_wrdata[30] : pci_block_write_read_n; // xfer direction control
>      pci_low32_hr             <= (pci_dc_sdram_fifo_ld & ~pci_port_add_ctr[0]) ? {pci_dc_sdram_wrdata[31:0]} : pci_low32_hr;
>      pci_upper32_hr           <= (pci_dc_sdram_fifo_rdnxt & pci_port_add_ctr[0]) ? sdram_fifo_rd_data[63:32] : pci_upper32_hr;
>      local_pci_dat_hr         <= local_pci_hr_wr ? pci_dc_sdram_wrdata : local_pci_dat_hr;
>      pci_dc_start_add_ld_q    <= pci_dc_start_add_ld;
>      pci_dc_block_cnt_ld_q    <= pci_dc_block_cnt_ld;
>      ld_last_word_of_xfer_q   <= ld_last_word_of_xfer;
>      ld_modulo_40_word_q      <= ld_modulo_40_word;
>      pci_inc_block_ctr_q      <= (ld_last_word_of_xfer | ld_modulo_40_word);
>      sdram_block_write_done_q <= {sdram_block_write_done_q[0], block_write_done}; 
>      sdram_block_read_done_q  <= {sdram_block_read_done_q[0],  block_read_done}; 
>      pci_blkxer_ctr_tc_q      <= {pci_blkxer_ctr_tc_q[0], (pci_block_transfer_ctr == 11'h000)};
>      dc_pci_set_blkxfer_int   <= pci_block_write_read_n ? sdram_blk_wr_done_led : pci_blkxer_ctr_tc_q_led;
>      dc_pci_block_rd_done     <= block_read_done;
>      fifo_room_for_40h_q      <= fifo_room_for_40h;
>      decrement_by_40_on_read  <= (pci_40_dword_detect_ctr == 7'h7F) & pci_wr_rd_cycle & ~pci_block_write_read_n;
>      blk_read_sequence_q      <= {blk_read_sequence_q[1:0], initiate_blk_read};
>      end_of_read_blk_handle_q <= sdram_blk_rd_done_led;
>   end
>    
> always @(posedge clk_33mhz)
>   begin
>     if (~ck_pci_reset_n)
>       pci_block_transfer_ctr <= 11'h000;
>     else if (pci_dc_block_cnt_ld)
>       pci_block_transfer_ctr <= {pci_dc_sdram_wrdata[9:0], 1'b0};
>     else if (pci_wr_rd_cycle)
>       pci_block_transfer_ctr <= pci_block_transfer_ctr - 1'b1;
>   end
>    
> always @(posedge clk_33mhz)
>   begin
>     if (~ck_pci_reset_n | pci_dc_block_cnt_ld)
>       pci_port_add_ctr <= 9'h000;
>     else if (pci_wr_rd_cycle)
>       pci_port_add_ctr <= pci_port_add_ctr + 1'b1;
>   end
>    
> always @(posedge clk_33mhz)
>   begin
>     if (~ck_pci_reset_n )
>       pci_dwrd_ctr <= 7'h00;
>     else if (ld_modulo_40_word_q)
>       pci_dwrd_ctr <= 7'h40;
>     else if (ld_last_word_of_xfer_q)
>       pci_dwrd_ctr <= {1'b0, pci_port_add_ctr[6:1]};
>     else if (ld_last_blk_of_read_xfer)
>       pci_dwrd_ctr <= pci_dword_fetch_ctr[6:0];
>   end
>   
> always @(posedge clk_33mhz)
>   begin
>     if (~ck_pci_reset_n)
>       pci_dword_fetch_ctr <= 11'h000;
>     else if (pci_dc_block_cnt_ld)
>       pci_dword_fetch_ctr <= pci_dc_sdram_wrdata[10:0];
>     else if (sdram_blk_rd_done_led) // on read block done decrement
>       pci_dword_fetch_ctr <= pci_dword_fetch_ctr - pci_dwrd_ctr;
>   end
>   
> always @(posedge clk_33mhz)
>   begin
>     if (~ck_pci_reset_n | pci_dc_block_cnt_ld)
>       pci_40_dword_detect_ctr <= 7'h00;
>     else if (pci_wr_rd_cycle & ~pci_block_write_read_n) //
>       pci_40_dword_detect_ctr <= pci_40_dword_detect_ctr + 1'b1;
>   end
> 
> // ********************************************************************
> //  PDCLK Domain
> // ********************************************************************
> reg        debug_write_last;
> 
> reg        pending_read_block_req;
> reg  [1:0] srbr_q, start_add_ld_q,  block_cnt_ld_q, inc_block_ctr_q;
> reg  [1:0] inc_block_ctr_led_q;
> reg  [6:0] inc_value_reg;
> reg  [8:0] sdram_fifo_depth_ctr;
> reg  [9:0] dword_blk_cnt_ctr;
> reg  [1:0] dword_blk_cnt_ctr_tc_q;
> 
> wire sdram_write_for_pci, sdram_read_for_pci; 
> wire serve_pci_write_blk, serve_pci_read_blk;
> 
> wire set_rbr                  = ~srbr_q[1] & srbr_q[0];
> wire start_add_ld_led         = ~start_add_ld_q[1]  & start_add_ld_q[0];
> wire block_cnt_ld_led         = ~block_cnt_ld_q[1]  & block_cnt_ld_q[0];
> wire inc_block_ctr_led        = ~inc_block_ctr_q[1] & inc_block_ctr_q[0];
> wire dec_by_40_on_read_led    = ~dec_by_40_on_read_q[1]  &  dec_by_40_on_read_q[0];
> wire sdram_event_for_pci      =  (sdram_write_for_pci | sdram_read_for_pci);
> wire sdram_fifo_depth_ctr_tc  = (sdram_fifo_depth_ctr == 9'h000);
> wire dword_blk_cnt_ctr_tc     = (dword_blk_cnt_ctr == 10'h000);
> wire dword_blk_cnt_ctr_tc_led = ~dword_blk_cnt_ctr_tc_q[1] & dword_blk_cnt_ctr_tc_q[0]; 
> 
> always @(posedge clk_ad9857_pd_drate)
>   begin
>     sdram_fifo_drport_wr_data <= xt_dc_sdram_dq_in;
>     pipeline_rddata_val_q     <= {pipeline_rddata_val_q[6:0], pipeline_rddata_val};
>     debug_write_last          <= (pci_mode_blk_wr_rd_n & ~dram_iq_semaphore & sblk_xfer_cnt_dec | ~pci_mode_blk_wr_rd_n & ~dram_iq_semaphore & pipeline_rddata_val_q[7]);
>     dram_debug                <= {
>        // pci_blkxer_ctr_tc_q[0], dc_pci_set_blkxfer_int, 
>        //        pci_read_block_req, pci_write_block_rdy,dram_seq_state, 1'b0,  // 9  48    
>        // bwr_done_led,  start_add_ld_q[0], block_cnt_ld_q[0], inc_block_ctr_q[0], // 4
>        // inc_block_ctr_led_q,                                          // 1  inc_value_reg,     
>        // sdram_block_transfer_ctr[8:0], // 9 
>        // ld_last_word_of_xfer_q, ld_modulo_40_word_q, 1'b0, dram_seq_state,  // pci_dwrd_ctr,
>        // pci_blkxer_ctr_tc_q_led,                                //   1   39    sdram_fifo_drport_add_ctr[7:0],
>        // 4'h0, block_cnt_ld_led,  pci_dc_sdram_fifo_ld,          //   6   38
>        // dc_pci_set_blkxfer_int, pci_mode_blk_wr_rd_n,           //   2   32 sdram_fifo_depth_ctr
>        // pci_dc_block_cnt_ld,    pci_block_transfer_ctr,          //  12   30
>        // inc_block_ctr_led_q[1], sdram_fifo_depth_ctr[8:0],      //  10   18
>        // inc_block_ctr_led_q[0], inc_value_reg[6:0]              //   8 
>           2'b00, dram_seq_state,                                                              //   8   48
>           fifo_room_for_40h_q, 1'b0, decrement_by_40_on_read,    //   3   40
>           blk_read_sequence_q[2], end_of_read_blk_handle_q, pending_read_block_req,        //   3   37
>           dec_by_40_on_read_q[1], fifo_room_for_40h,                                   //   2   34
>           pci_dc_block_cnt_ld,    pci_block_transfer_ctr,                              //  12   32
>           pci_read_block_req, dec_by_40_on_read_led, sdram_read_for_pci, sdram_fifo_depth_ctr[8:0],  //  12   20
>           set_rbr,               inc_value_reg[6:0]                                    //   8 
> 
>     //      pci_port_add_ctr[8:1], 
>     //      sdram_fifo_rd_data[15:0]
> 
>           };
>     pending_read_block_req    <= set_rbr | (pending_read_block_req & clk_ad9857_pd_drate_stable & ~(pipeline_rddata_val & ~dram_iq_semaphore));
>     pci_read_block_req        <= pending_read_block_req & fifo_room_for_40h & ~(pipeline_rddata_val & ~dram_iq_semaphore);
>     pci_write_block_rdy       <= ~sdram_fifo_depth_ctr_tc & pci_mode_blk_wr_rd_n;
>     pci_mode_blk_wr_rd_n      <= pci_block_write_read_n;
>     srbr_q                    <= { srbr_q[0], blk_read_sequence_q[2]};
>     start_add_ld_q            <= { start_add_ld_q[0],  pci_dc_start_add_ld_q };
>     block_cnt_ld_q            <= { block_cnt_ld_q[0],  pci_dc_block_cnt_ld_q };
>     inc_block_ctr_q           <= { inc_block_ctr_q[0], pci_inc_block_ctr_q };
>     inc_block_ctr_led_q       <= {inc_block_ctr_led_q[0],  inc_block_ctr_led};
>     dec_by_40_on_read_q       <= {dec_by_40_on_read_q[0], decrement_by_40_on_read};
>     inc_value_reg             <= (set_rbr | inc_block_ctr_led_q[0]) ? pci_dwrd_ctr : inc_value_reg;
>     fifo_room_for_40h         <= ~sdram_fifo_depth_ctr[7] | ~sdram_fifo_depth_ctr[6];
>     dword_blk_cnt_ctr_tc_q    <= {dword_blk_cnt_ctr_tc_q[0], dword_blk_cnt_ctr_tc};
>   end
>   
> // reg [15:0] blk_cnt_ld_ctr, set_int_ctr; 
> // assign dc_pci_ctr_debug = {blk_cnt_ld_ctr, set_int_ctr};
> reg [31:0] blk_cnt_ld_ctr, set_int_ctr; 
> assign dc_pci_debug_1 = blk_cnt_ld_ctr;
> assign dc_pci_debug_2 = set_int_ctr;
> 
> always @(posedge clk_ad9857_pd_drate)
>   begin
>     if (~clk_ad9857_pd_drate_stable)
>       blk_cnt_ld_ctr <= 32'h0000;
> //    else if (block_cnt_ld_led)
>     else if (pci_mode_blk_wr_rd_n & ~dram_iq_semaphore & sblk_xfer_cnt_dec)
>       blk_cnt_ld_ctr <=  blk_cnt_ld_ctr + 1'b1;
>   end
>  
> // always @(posedge clk_ad9857_pd_drate)
> always @(posedge clk_33mhz)
>   begin
>     if (~clk_ad9857_pd_drate_stable)
>       set_int_ctr <= 32'h0000;
> //  else if (( bwr_done_q[0] | brd_done_q[0]) & pci_blkxer_ctr_tc_q[0]) 
>     else if (pci_blkxer_ctr_tc_q_led)
> //  else if (pci_wr_rd_cycle)                                   
>       set_int_ctr <=  set_int_ctr + 1'b1;
>   end
> 
> always @(posedge clk_ad9857_pd_drate)
>   begin
>     if (~clk_ad9857_pd_drate_stable | block_cnt_ld_led)
>       sdram_fifo_depth_ctr <= 9'h000;
>     else if (inc_block_ctr_led_q[1]  & sdram_write_for_pci & pci_mode_blk_wr_rd_n)
>       sdram_fifo_depth_ctr <= sdram_fifo_depth_ctr + inc_value_reg - 1'b1;
>     else if (inc_block_ctr_led_q[1]  & ~sdram_write_for_pci & pci_mode_blk_wr_rd_n)
>       sdram_fifo_depth_ctr <= sdram_fifo_depth_ctr + inc_value_reg;
>     else if (~inc_block_ctr_led_q[1]  & sdram_write_for_pci & pci_mode_blk_wr_rd_n)
>       sdram_fifo_depth_ctr <= sdram_fifo_depth_ctr - 1'b1 ;      
>     else if (dec_by_40_on_read_led & sdram_read_for_pci & ~pci_mode_blk_wr_rd_n)
>       sdram_fifo_depth_ctr <= sdram_fifo_depth_ctr - 7'h3F ;      
>     else if (dec_by_40_on_read_led & ~sdram_read_for_pci & ~pci_mode_blk_wr_rd_n)
>       sdram_fifo_depth_ctr <= sdram_fifo_depth_ctr - 7'h40 ;      
>     else if (~dec_by_40_on_read_led & sdram_read_for_pci & ~pci_mode_blk_wr_rd_n)
>       sdram_fifo_depth_ctr <= sdram_fifo_depth_ctr + 7'h01 ;      
>   end
>  
> always @(posedge clk_ad9857_pd_drate)
>   begin
>     if (~clk_ad9857_pd_drate_stable)
>       sdram_start_address_reg <= 27'h000_0000;
>     else if (start_add_ld_led)
>       sdram_start_address_reg <= local_pci_dat_hr[29:3];
>     else if (sdram_event_for_pci )
>       sdram_start_address_reg <= sdram_start_address_reg + 1'b1 ;      
>   end
>     
> always @(posedge clk_ad9857_pd_drate)
>   begin
>     if (~clk_ad9857_pd_drate_stable)
>       sdram_block_transfer_ctr <= 9'h000;
>     else if (serve_pci_write_blk)
>       sdram_block_transfer_ctr <= sdram_fifo_depth_ctr;
>     else if (serve_pci_read_blk)
>       sdram_block_transfer_ctr <= {2'b00, inc_value_reg};
>     else if (sdram_event_for_pci)
>       sdram_block_transfer_ctr <= sdram_block_transfer_ctr - 1'b1;
>   end
> 
> reg   sdram_write_for_pci_q; 
> always @(posedge clk_ad9857_pd_drate)
>   begin
>     sdram_write_for_pci_q <= sdram_write_for_pci;
>   end
>    
> always @(posedge clk_ad9857_pd_drate)
>   begin
>     if (~clk_ad9857_pd_drate_stable | block_cnt_ld_led )
>       sdram_fifo_drport_add_ctr <= 8'h00;
>     else if (sdram_write_for_pci_q | 
>             ~pci_mode_blk_wr_rd_n & ~dram_iq_semaphore & pipeline_rddata_val_q[7])
>       sdram_fifo_drport_add_ctr <= sdram_fifo_drport_add_ctr + 1'b1;
>   end
>   
> always @(posedge clk_ad9857_pd_drate)
>   begin
>     if (~clk_ad9857_pd_drate_stable | block_cnt_ld_led)
>       dword_blk_cnt_ctr <= pci_block_transfer_ctr[10:1];
>     else if (sdram_write_for_pci)
>       dword_blk_cnt_ctr <= dword_blk_cnt_ctr - 1'b1;
>   end
>   
> 
>   RAMB4_S16_S16 sdram_fifo_bits15_00 ( // 256x16
>     .CLKA  (clk_33mhz),      // Port A - PCI side
>     .RSTA  (1'b0), 
>     .WEA   (sdram_fifo_pci_wr), 
>     .ENA   (1'b1), 
>     .ADDRA (pci_port_add_ctr[8:1]), 
>     .DIA   (sdram_fifo_wr_data[15:0]),
>     .DOA   (sdram_fifo_rd_data[15:0]),      
>     .CLKB  (clk_ad9857_pd_drate), 
>     .RSTB  (1'b0),
>     .WEB   (~dram_iq_semaphore & pipeline_rddata_val_q[7]), 
>     .ENB   (1'b1), 
>     .ADDRB (sdram_fifo_drport_add_ctr), 
>     .DIB   (sdram_fifo_drport_wr_data[15:0]), 
>     .DOB   (sdram_fifo_drport_rd_data[15:0])
>     );
> 
>   RAMB4_S16_S16 sdram_fifo_bits31_16 ( // 256x16
>     .CLKA  (clk_33mhz),      // Port A - PCI side
>     .RSTA  (1'b0), 
>     .WEA   (sdram_fifo_pci_wr), 
>     .ENA   (1'b1), 
>     .ADDRA (pci_port_add_ctr[8:1]), 
>     .DIA   (sdram_fifo_wr_data[31:16]),
>     .DOA   (sdram_fifo_rd_data[31:16]),      
>     .CLKB  (clk_ad9857_pd_drate), 
>     .RSTB  (1'b0),
>     .WEB   (~dram_iq_semaphore & pipeline_rddata_val_q[7]), 
>     .ENB   (1'b1), 
>     .ADDRB (sdram_fifo_drport_add_ctr), 
>     .DIB   (sdram_fifo_drport_wr_data[31:16]), 
>     .DOB   (sdram_fifo_drport_rd_data[31:16])
>     );
> 
>   RAMB4_S16_S16 sdram_fifo_bits47_32 ( // 256x16
>     .CLKA  (clk_33mhz),      // Port A - PCI side
>     .RSTA  (1'b0), 
>     .WEA   (sdram_fifo_pci_wr), 
>     .ENA   (1'b1), 
>     .ADDRA (pci_port_add_ctr[8:1]), 
>     .DIA   (sdram_fifo_wr_data[47:32]),
>     .DOA   (sdram_fifo_rd_data[47:32]),      
>     .CLKB  (clk_ad9857_pd_drate), 
>     .RSTB  (1'b0),
>     .WEB   (~dram_iq_semaphore & pipeline_rddata_val_q[7]), 
>     .ENB   (1'b1), 
>     .ADDRB (sdram_fifo_drport_add_ctr), 
>     .DIB   (sdram_fifo_drport_wr_data[47:32]), 
>     .DOB   (sdram_fifo_drport_rd_data[47:32])
>     );
> 
>   RAMB4_S16_S16 sdram_fifo_bits63_48 ( // 256x16
>     .CLKA  (clk_33mhz),      // Port A - PCI side
>     .RSTA  (1'b0), 
>     .WEA   (sdram_fifo_pci_wr), 
>     .ENA   (1'b1), 
>     .ADDRA (pci_port_add_ctr[8:1]), 
>     .DIA   (sdram_fifo_wr_data[63:48]),
>     .DOA   (sdram_fifo_rd_data[63:48]),      
>     .CLKB  (clk_ad9857_pd_drate), 
>     .RSTB  (1'b0),
>     .WEB   (~dram_iq_semaphore & pipeline_rddata_val_q[7]), 
>     .ENB   (1'b1), 
>     .ADDRB (sdram_fifo_drport_add_ctr), 
>     .DIB   (sdram_fifo_drport_wr_data[63:48]), 
>     .DOB   (sdram_fifo_drport_rd_data[63:48])
>     );
> // ********************************************************************
> //  IQ Unpack RD SDRAM Interface 
> // ********************************************************************
> reg [7:0] iq_gated_rddata_val_q;
> 
> always @(posedge clk_ad9857_pd_drate)
>   begin
>     get_next_blk_q        <= du_dc_get_next_blk;
>     iq_gated_rddata_val_q <= {iq_gated_rddata_val_q[6:0], dram_iq_semaphore & pipeline_rddata_val};
>     dc_du_wr_next_line    <= iq_gated_rddata_val_q[7];
>     dc_du_next_line_data  <= sdram_fifo_drport_wr_data;
>     dc_du_reset_gnb       <= dram_iq_semaphore;
>   end
>             
> always @(posedge clk_ad9857_pd_drate)
>   begin
>     if (~clk_ad9857_pd_drate_stable)
>       iq_unpack_block_transfer_ctr <= 8'h00;
>     else if (get_next_blk_led)
>       iq_unpack_block_transfer_ctr <= du_dc_blk_size;
>     else if (sblk_xfer_cnt_dec & dram_iq_semaphore)
>       iq_unpack_block_transfer_ctr <= iq_unpack_block_transfer_ctr - 1'b1;
>   end
>  
> always @(posedge clk_ad9857_pd_drate)
>   begin
>     if (~clk_ad9857_pd_drate_stable)
>       iq_unpack_start_address_reg <= 27'h000_0000;
>     else if (get_next_blk_led)
>       iq_unpack_start_address_reg <= du_dc_blk_start_add[29:3]; 
>     else if (sblk_xfer_cnt_dec & dram_iq_semaphore)
>       iq_unpack_start_address_reg <= iq_unpack_start_address_reg + 1'b1 ;      
>   end
> 
> 
> // ********************************************************************
> // SDRAM Control State Machine 
> // ********************************************************************
>   parameter DRAM_DELAY_100_US    = 13'h1900;  // actually about 102.4 us
>   parameter DRAM_DELAY_TMRD      = 13'h0002;  // delay from mode reg load to active
>   parameter DRAM_DELAY_TRCD      = 13'h0002;  // delay from active to WRITE
>   parameter DRAM_DELAY_TRP       = 13'h0001;  // delay from precharge to autorefresh
>   parameter DRAM_DELAY_TRFC      = 13'h0004;  // delay from autorefresh to active
>   // DRAM control states
>   parameter DRAM_COMMAND_INHIBIT = 4'b1000;   // 8H
>   parameter DRAM_NOP             = 4'b0111;   // 7H
>   parameter DRAM_ACTIVE          = 4'b0011;   // 3H
>   parameter DRAM_READ            = 4'b0101;   // 5H
>   parameter DRAM_WRITE           = 4'b0100;   // 4H
>   parameter DRAM_BURST_TERMINATE = 4'b0110;   // 6H
>   parameter DRAM_PRECHARGE       = 4'b0010;   // 2H
>   parameter DRAM_AUTO_REFRESH    = 4'b0001;   // 1H
>   parameter DRAM_LOAD_MODE_REG   = 4'b0000;   // 0H
> 
>   // DRAM states definitions
>   parameter DRAM_INIT_0             = 6'h00;
>   parameter DRAM_100US_NOP_0        = 6'h01;
>   parameter DRAM_PRECHARGE_ALL_0    = 6'h02;
>   parameter DRAM_PRECHARGE_ALL_1    = 6'h03;
>   parameter DRAM_AUTOREFRESH_0      = 6'h04;
>   parameter DRAM_AUTOREFRESH_1      = 6'h05;
>   parameter DRAM_MODEREG_WR_0       = 6'h06;
>   parameter DRAM_MODEREG_WR_1       = 6'h07;
>   parameter DRAM_IDLE_0             = 6'h08;
>   parameter DRAM_WRLOOP_0           = 6'h0B;
>   parameter DRAM_WRLOOP_1           = 6'h0C;
>   parameter DRAM_WRLOOP_2           = 6'h0D;
>   parameter DRAM_WRLOOP_3           = 6'h0E;
>   parameter DRAM_WRLOOP_4           = 6'h0F;
>   parameter DRAM_RDLOOP_0           = 6'h11;
>   parameter DRAM_RDLOOP_1           = 6'h12;
>   parameter DRAM_RDLOOP_2           = 6'h13;
>   parameter DRAM_RDLOOP_3           = 6'h14;
>   parameter DRAM_RDLOOP_4           = 6'h15;
>   parameter DRAM_AUTOREFRESH_OP_0   = 6'h16;
>   parameter DRAM_AUTOREFRESH_OP_1   = 6'h17;
> 
> assign sdram_write_for_pci = ((dram_seq_state == DRAM_WRLOOP_2));
> assign sdram_read_for_pci  = ((dram_seq_state == DRAM_RDLOOP_2) & ~sblk_xfer_cnt_tc);
> assign serve_pci_write_blk = (dram_seq_state == DRAM_IDLE_0) & ~du_dc_get_next_blk & pci_write_block_rdy;
> assign serve_pci_read_blk  = (dram_seq_state == DRAM_IDLE_0) & ~du_dc_get_next_blk & pci_read_block_req;
> assign sblk_xfer_cnt_dec = (((dram_seq_state == DRAM_WRLOOP_2) & ~sblk_xfer_cnt_tc) |  
>                              (dram_seq_state == DRAM_RDLOOP_2) & (dram_iq_semaphore ? ~iq_unpack_xfer_cnt_tc : ~sblk_xfer_cnt_tc));
> 
> always @(posedge clk_ad9857_pd_drate)
>   begin
>     bwr_done_q              <= {bwr_done_q[0], dword_blk_cnt_ctr_tc_led};
>     brd_done_q              <= {brd_done_q[0], (dram_seq_state == DRAM_RDLOOP_4) & ( dram_delay_ctr == 13'h0000) & ~dram_iq_semaphore} ;
>     clr_dram_afc            <= (dram_ctl == DRAM_AUTO_REFRESH);
>     dram_afc_tc_q           <= dram_auto_refresh_ctr_tc;
>     dc_pci_init_done        <= ((dram_seq_state == DRAM_IDLE_0) | dc_pci_init_done) & clk_ad9857_pd_drate_stable;
>     block_write_done        <= | bwr_done_q; // pulse stretch
>     block_read_done         <= | brd_done_q; // pulse stretch  
>   end
> // DAC RAM Bank Select
> 
> always @(posedge clk_ad9857_pd_drate)
>   begin
>     if (~clk_ad9857_pd_drate_stable)
>       dram_auto_refresh_ctr <= DLY_7US_AT_PDCLK;
>     else if (clr_dram_afc)
>       dram_auto_refresh_ctr <= 9'h000;
>     else if (~dram_auto_refresh_ctr_tc)
>       dram_auto_refresh_ctr <= dram_auto_refresh_ctr + 1'b1;
>   end
> 
> always @ (posedge clk_ad9857_pd_drate) 
>   begin
>     if (~clk_ad9857_pd_drate_stable) begin
>       dram_seq_state       <= DRAM_INIT_0;
>       dram_delay_ctr       <= DRAM_DELAY_100_US;
>       dram_ctl             <= DRAM_COMMAND_INHIBIT;
>       sdram_256mb_id       <= 4'hF;
>       sdram_ba             <= 2'b00;
>       sdram_a              <= 13'h0000;
>       dram_loopcnt         <= 8'h00;
>       pipeline_rddata_val  <= 1'b0;
>       dram_ctl_wr_blk_done <= 1'b0;
>       dram_iq_semaphore    <= 1'b0;
>       end
>     else begin
>       case(dram_seq_state)
>         DRAM_INIT_0 : begin
>           dram_seq_state       <= DRAM_100US_NOP_0;          
>           dram_delay_ctr       <= DRAM_DELAY_100_US;
>           dram_ctl             <= DRAM_COMMAND_INHIBIT;
>           sdram_256mb_id       <= 4'hF;
>           sdram_ba             <= 2'b00;
>           sdram_a              <= 13'h0000;
>           dram_loopcnt         <= 8'h00;
>           pipeline_rddata_val  <= 1'b0;
>           dram_ctl_wr_blk_done <= 1'b0;
>           dram_iq_semaphore    <= 1'b0;
>           end
>         DRAM_100US_NOP_0 : begin
>           if ( dram_delay_ctr == 13'h0000) begin
>             dram_seq_state <= DRAM_PRECHARGE_ALL_0;
>             end
>           else begin
>             dram_seq_state <= DRAM_100US_NOP_0;
>             dram_delay_ctr <= dram_delay_ctr - 1;
>             end
>           end
>         DRAM_PRECHARGE_ALL_0 : begin
>           dram_seq_state   <= DRAM_PRECHARGE_ALL_1;
>           dram_ctl         <= DRAM_PRECHARGE;
>           sdram_a          <= 13'h0400;              
>           dram_delay_ctr   <= DRAM_DELAY_TRP;
>           end
>         DRAM_PRECHARGE_ALL_1 : begin
>           dram_ctl         <= DRAM_NOP;
>           sdram_a          <= 13'h0000;              
>           if ( dram_delay_ctr == 13'h0000)  begin
>             dram_seq_state <= DRAM_AUTOREFRESH_0;
>             dram_loopcnt     <= 8'h01;
>             end
>           else begin
>             dram_seq_state <= DRAM_PRECHARGE_ALL_1;
>             dram_delay_ctr <= dram_delay_ctr-1;
>             end       
>           end
>         DRAM_AUTOREFRESH_0 : begin
>           dram_seq_state   <= DRAM_AUTOREFRESH_1;
>           dram_ctl         <= DRAM_AUTO_REFRESH;
>           dram_delay_ctr   <= DRAM_DELAY_TRFC;
>           end
>         DRAM_AUTOREFRESH_1 : begin
>           dram_ctl       <= DRAM_NOP;          
>           if ( dram_delay_ctr == 13'h0000) 
>             if ( dram_loopcnt == 8'h00)
>               dram_seq_state <= DRAM_MODEREG_WR_0;
>             else begin
>               dram_seq_state <= DRAM_AUTOREFRESH_0;
>               dram_loopcnt   <= dram_loopcnt-1;
>               end       
>           else begin
>             dram_seq_state   <= DRAM_AUTOREFRESH_1;
>             dram_delay_ctr   <= dram_delay_ctr-1;
>             end
>           end
>         DRAM_MODEREG_WR_0 : begin
>           dram_seq_state   <= DRAM_MODEREG_WR_1;
>           dram_ctl         <= DRAM_LOAD_MODE_REG;
>           sdram_a          <= 13'h0230;
>           dram_delay_ctr   <= DRAM_DELAY_TMRD;             
>           end
>         DRAM_MODEREG_WR_1 : begin
>           dram_ctl          <= DRAM_NOP;
>           sdram_a           <= 13'h0000;
>           if (dram_delay_ctr == 13'h0000) begin             
>             dram_seq_state  <= DRAM_IDLE_0;
>             end
>           else begin
>             dram_seq_state <= DRAM_MODEREG_WR_1;
>             dram_delay_ctr <= dram_delay_ctr-1;
>             end 
>           end
>         DRAM_IDLE_0   : begin
>           sdram_256mb_id      <= 4'h0;
>           if (du_dc_get_next_blk) begin
>             dram_iq_semaphore <= 1'b1;
>             dram_seq_state    <= DRAM_RDLOOP_0;          
>             end          
>           else if (pci_write_block_rdy)
>             dram_seq_state <= DRAM_WRLOOP_0;
>           else if (pci_read_block_req)
>             dram_seq_state <= DRAM_RDLOOP_0;          
>           else if (dram_afc_tc_q)
>             dram_seq_state <= DRAM_AUTOREFRESH_OP_0;
>           end  
>         DRAM_WRLOOP_0 : begin
>           dram_seq_state <= DRAM_WRLOOP_1;
>           dram_ctl       <= DRAM_ACTIVE;
>           sdram_ba       <= sdram_start_address_reg[27:26];
>           sdram_a        <= sdram_start_address_reg[25:13];
>           dram_delay_ctr <= DRAM_DELAY_TRCD;
>           case(sdram_start_address_reg[29:28])
>             2'b00 : begin sdram_256mb_id <= 4'h1; end
>             2'b01 : begin sdram_256mb_id <= 4'h2; end
>             2'b10 : begin sdram_256mb_id <= 4'h4; end
>             2'b11 : begin sdram_256mb_id <= 4'h8; end
>           endcase      
>           end
>         DRAM_WRLOOP_1 : begin
>           dram_ctl         <= DRAM_NOP;
>           if (dram_delay_ctr == 13'h0000) begin             
>             dram_seq_state     <= DRAM_WRLOOP_2;
>             end
>           else begin
>             dram_seq_state <= DRAM_WRLOOP_1;
>             dram_delay_ctr <= dram_delay_ctr-1;
>             end
>           end
>         DRAM_WRLOOP_2 : begin
>           dram_ctl          <= DRAM_WRITE;
>           sdram_a           <= {3'b000, sdram_start_address_reg[12:3]};             
>           dram_seq_state    <= sblk_xfer_cnt_tc ? DRAM_WRLOOP_3 : DRAM_WRLOOP_2;
>           end
>         DRAM_WRLOOP_3 : begin          // post-WRITE burst precharge
>           dram_seq_state   <= DRAM_WRLOOP_4;
>           dram_ctl         <= DRAM_PRECHARGE;
>           sdram_a          <= 13'h0400;              
>           dram_delay_ctr   <= DRAM_DELAY_TRP;
>           dram_ctl_wr_blk_done <= 1'b1;
>           end
>         DRAM_WRLOOP_4 : begin
>           dram_ctl         <= DRAM_NOP;
>           sdram_a          <= 13'h0000;              
>           dram_ctl_wr_blk_done <= 1'b0;
>           if ( dram_delay_ctr == 13'h0000)  begin
>             dram_seq_state       <= DRAM_IDLE_0;
>             end
>           else begin
>             dram_seq_state <= DRAM_WRLOOP_4;
>             dram_delay_ctr <= dram_delay_ctr-1;
>             end       
>            end
>         DRAM_RDLOOP_0 : begin
>           dram_seq_state       <= DRAM_RDLOOP_1;
>           dram_ctl             <= DRAM_ACTIVE;
>           sdram_ba             <= dram_iq_semaphore ?  iq_unpack_start_address_reg[27:26] : sdram_start_address_reg[27:26];
>           sdram_a              <= dram_iq_semaphore ?  iq_unpack_start_address_reg[25:13] : sdram_start_address_reg[25:13];
>           dram_delay_ctr       <= DRAM_DELAY_TRCD;
>           case(dram_iq_semaphore ?  iq_unpack_start_address_reg[29:28] : sdram_start_address_reg[29:28])
>             2'b00 : begin sdram_256mb_id <= 4'h1; end
>             2'b01 : begin sdram_256mb_id <= 4'h2; end
>             2'b10 : begin sdram_256mb_id <= 4'h4; end
>             2'b11 : begin sdram_256mb_id <= 4'h8; end
>           endcase      
>           end
>         DRAM_RDLOOP_1 : begin
>           dram_ctl             <= DRAM_NOP;
>           if (dram_delay_ctr == 13'h0000) begin             
>             dram_seq_state      <= DRAM_RDLOOP_2;
>             pipeline_rddata_val <= 1'b1;
>             end
>           else begin
>             dram_seq_state <= DRAM_RDLOOP_1;
>             dram_delay_ctr <= dram_delay_ctr-1;
>             end
>           end
>         DRAM_RDLOOP_2 : begin
>           dram_ctl              <= DRAM_READ;
>           sdram_a               <= {3'b000, (dram_iq_semaphore ?  iq_unpack_start_address_reg[12:3] : sdram_start_address_reg[12:3])};
>           if (dram_iq_semaphore ? iq_unpack_xfer_cnt_tc : sblk_xfer_cnt_tc) begin
>             dram_seq_state      <= DRAM_RDLOOP_3;
>             pipeline_rddata_val <= 1'b0;
>             end
>           else begin
>             dram_seq_state      <= DRAM_RDLOOP_2;
>             pipeline_rddata_val <= 1'b1;
>             end
>           end
>         DRAM_RDLOOP_3 : begin    // post-READ burst precharge
>           pipeline_rddata_val <= 1'b0;
>           dram_seq_state    <= DRAM_RDLOOP_4;
>           dram_ctl          <= DRAM_PRECHARGE;
>           sdram_a           <= 13'h0400;              
>           dram_delay_ctr    <= DRAM_DELAY_TRP;
>           end
>         DRAM_RDLOOP_4 : begin
>           dram_ctl         <= DRAM_NOP;
>           sdram_a          <= 13'h0000;              
>           if ( dram_delay_ctr == 13'h0000)  begin
>             dram_seq_state    <= DRAM_IDLE_0;
>             dram_iq_semaphore <= 1'b0;
>             end
>           else begin
>             dram_seq_state <= DRAM_RDLOOP_4;
>             dram_delay_ctr <= dram_delay_ctr-1;
>             end       
>            end
>         DRAM_AUTOREFRESH_OP_0 : begin
>           dram_seq_state <= DRAM_AUTOREFRESH_OP_1;
>           dram_ctl       <= DRAM_AUTO_REFRESH;
>           dram_delay_ctr <= DRAM_DELAY_TRFC;
>           sdram_256mb_id <= 4'hF;
>           end
>         DRAM_AUTOREFRESH_OP_1 : begin
>           dram_ctl         <= DRAM_NOP;
>           if ( dram_delay_ctr == 13'h0000) 
>             dram_seq_state <= DRAM_IDLE_0;
>           else begin
>             dram_seq_state <= DRAM_AUTOREFRESH_OP_1;
>             dram_delay_ctr <= dram_delay_ctr-1;
>             end
>           end
>       endcase
>     end
>   end
>   

Article: 128615
Subject: Re: Design security for pre-Virtex2 parts ?
From: job@amontec.com
Date: Thu, 31 Jan 2008 11:40:46 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 31, 5:21 pm, Marlboro <cco...@netscape.net> wrote:
> Hi all,
>
> Has anyone ever tried to improve the security for the old Xilinx FPGA
> devices, which doesn't have the 3-DES encryption?  If so what's the
> feasible approach ?  So far I have no clue
>
> TIA,

We have used this great solution :
http://www.maxim-ic.com/appnotes.cfm/an_pk/3826

This is a generic solution, not dedicated to any FPGA maker !

Regards,
Laurent
  http://www.amontec.com

Article: 128616
Subject: Re: Design security for pre-Virtex2 parts ?
From: "Dwayne Dilbeck" <ddilbeck@yahoo.com>
Date: Thu, 31 Jan 2008 12:01:30 -0800
Links: << >>  << T >>  << A >>
Interesting.  I am definitely behind in the times for fpga security.

"Ed McGettigan" <ed.mcgettigan@xilinx.com> wrote in message 
news:fnt5lb$2h72@cnn.xsj.xilinx.com...
> RCIngham wrote:
>>> Hi all,
>>>
>>> Has anyone ever tried to improve the security for the old Xilinx FPGA
>>> devices, which doesn't have the 3-DES encryption?  If so what's the
>>> feasible approach ?  So far I have no clue
>>>
>>> TIA,
>>>
>>
>> I am not a Xilinx expert, but I think the answer is "cannot be done". Use
>> something else if you don't want the bitstream snooped upon.
>>
> Actually there are alternatives using external and/or internal features.
> This is marketing piece, but informative on the subject:
> http://www.xilinx.com/publications/prod_mktg/DesignSecurity_ssht.pdf
>
> And this white paper describes how to implement a CipherStream protocol:
> http://www.xilinx.com/support/documentation/white_papers/wp197.pdf
>
> An application note for copy protection using a secure EEPROM:
> http://www.xilinx.com/support/documentation/application_notes/xapp780.pdf
>
> And this landing page holds a whole lot more on this subject:
> http://www.xilinx.com/products/design_resources/security/
>
> Ed McGettigan
> --
> Xilinx Inc. 



Article: 128617
Subject: Why does a 36 x 36 Multiplier in a Xilinx Spartan 3E require 9
From: Dale <dale.prather@gmail.com>
Date: Thu, 31 Jan 2008 12:04:46 -0800 (PST)
Links: << >>  << T >>  << A >>
I'm implementing a 36 bit x 36 bit multiplier with a 72 bit output in
a Xilinx Spartan 3E.  I've tried to poke down into the RTL schematic,
but I'm unable to push down into the multiplier block.

Could you please explain architecturally why this requires 9
multipliers?

Thanks,
Dale

Article: 128618
Subject: Re: FPGA in Telecommunications
From: nico@puntnl.niks (Nico Coesel)
Date: Thu, 31 Jan 2008 20:10:25 GMT
Links: << >>  << T >>  << A >>
Vagant <vladimir.v.korostelev@rambler.ru> wrote:

>Hello All,
>
>I am curious what are main applications of FPGA in
>Telecommunications?
>
>It's well known (well, at least for some smart chaps :) ) that DSPs
>(Digital Signal Processing Systems) can be implemented on FPGAs, but
>what about their use in Telecommunications?
>
>What are main directions, nowdays, for applications of FPGAs in
>telecommunications?

One company I worked for is leading in voice recorder technology. In
order to support a broad range of different telephone sets with the
same hardware they use FPGAs. Every switch manufacturer uses a
different proprietary protocol which needs to be dissected to retrieve
audio and dialed numbers.

-- 
Programmeren in Almere?
E-mail naar nico@nctdevpuntnl (punt=.)

Article: 128619
Subject: Re: Why does a 36 x 36 Multiplier in a Xilinx Spartan 3E require 9
From: Gabor <gabor@alacron.com>
Date: Thu, 31 Jan 2008 12:18:56 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 31, 3:04 pm, Dale <dale.prat...@gmail.com> wrote:
> I'm implementing a 36 bit x 36 bit multiplier with a 72 bit output in
> a Xilinx Spartan 3E.  I've tried to poke down into the RTL schematic,
> but I'm unable to push down into the multiplier block.
>
> Could you please explain architecturally why this requires 9
> multipliers?
>
> Thanks,
> Dale

Just a guess, but I imagine the multipliers are signed 18x18, so
you can't use all 18 bits when you try to extend them?

Article: 128620
Subject: Re: Xpower
From: Gabor <gabor@alacron.com>
Date: Thu, 31 Jan 2008 12:28:07 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 31, 11:44 am, Charles Wagner <charles.wag...@irisa.fr> wrote:
> Hi All,
>
> I am trying to see the power consumption of some design using XPower
> with ModelSim generated .vcd file
>
> I get this message :
> WARNING:Power:1087 - Can't change frequency of net clk to 100.00Mhz
> It sets the clock frequency automatically to 10 MHz irrespective of what
> I use in my simulation.
>
> Is it a problem related to the option that I used to generate the VCD
> file? Anybody got same experience?
>
> Thanks,
>
> Charles

This warning seemed familiar, so I searched the Xilinx forums, and it
would seem you're not alone.  Unfortunately no one answered the
question on that thread...

http://forums.xilinx.com/xlnx/board/message?board.id=ISE&message.id=750&query.id=21375#M750

Regards,
Gabor

Article: 128621
Subject: Re: FPGA in Telecommunications
From: Falk Brunner <Falk.Brunner@gmx.de>
Date: Thu, 31 Jan 2008 21:32:49 +0100
Links: << >>  << T >>  << A >>
Nico Coesel schrieb:

>> What are main directions, nowdays, for applications of FPGAs in
>> telecommunications?

I did a redesign once, where a bunch of ICs where completely replaced by 
one single, not even medium size FPGA. The boards was something like an 
A4 sheet, with two ASCIs, twos Altera FPGAs (Flex10K) and a Xilinx FPGA 
(XC2S30). This board was redesigned before, since some ICs went out of 
production. After this second (and last) redesign, ICs with a proce of 
~400 Euro were replaces by a single 20 Euro FPGA, a Cyclone. ;-)

Regards
Falk

Article: 128622
Subject: Re: Design security for pre-Virtex2 parts ?
From: waltherz <walther.zabel@gmx.de>
Date: Thu, 31 Jan 2008 12:36:01 -0800 (PST)
Links: << >>  << T >>  << A >>
U can't get security within chips that are provided for the mass
market.
everyone who has at least $10000 can backengineer these. It's better
to work on own solutions.

Marlboro schrieb:
> Hi all,
>
> Has anyone ever tried to improve the security for the old Xilinx FPGA
> devices, which doesn't have the 3-DES encryption?  If so what's the
> feasible approach ?  So far I have no clue
>
> TIA,

Article: 128623
Subject: Re: iru1209 regulator
From: waltherz <walther.zabel@gmx.de>
Date: Thu, 31 Jan 2008 12:46:32 -0800 (PST)
Links: << >>  << T >>  << A >>


Dave Pollum schrieb:
> On Jan 31, 9:47 am, waltherz <walther.za...@gmx.de> wrote:
> > Hello all,
> >
> > i have a design finished a few month ago, that is working fine on a
> > xc2s200-pq208, but when i port it to a xc3s400-tq144, it ain't work
> > most of the time (depends on the synthesis process) even with lowest
> > frequencies for a single clock and a given period constraint.
> >
> > Now, i wonder, if this is due to wrong regulators. Are there any other
> > good guys here, using those?
> > (If yes, please, tell me Package and Size of Fpga too. :-)
> >
> > much thanks in advance
> > walther
>
> I don't know what you mean by "wrong regulators".  You do know that
> the S2 (Spartan II) power supply voltages are not the same as the S3
> (Spartan 3) power voltages, don't you?  For example, the S2's Vccint
> is 2.5v and the S3's Vccint is 1.2v.  Check the Xilinx web site for
> documentation.
>
> -Dave Pollum

Hi Dave,

of course, i read the xilinx papers very often. I only need to know if
they are well suited to get closer to my issue.

walther

Article: 128624
Subject: Re: Why does a 36 x 36 Multiplier in a Xilinx Spartan 3E require
From: Kevin Neilson <kevin_neilson@removethiscomcast.net>
Date: Thu, 31 Jan 2008 14:00:58 -0700
Links: << >>  << T >>  << A >>
Dale wrote:
> I'm implementing a 36 bit x 36 bit multiplier with a 72 bit output in
> a Xilinx Spartan 3E.  I've tried to poke down into the RTL schematic,
> but I'm unable to push down into the multiplier block.
> 
> Could you please explain architecturally why this requires 9
> multipliers?
> 
> Thanks,
> Dale

You can do a 35x35 multiplier with four DSP48s, but doing a 36x36 takes 
more because you can't use the 18th (sign) bit in the LSB DSP48s.  See 
fig 1-21 of this doc: http://www.xilinx.com/bvdocs/userguides/ug073.pdf
(This is for V4 designs but I think the concept is the same.)  I don't 
know what you used to design this and why you can't look inside the RTL 
schematic, but maybe you can try the technology schematic.
-Kevin



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
2019JanFebMar2019

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