[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: gEDA-user: HELP with Icarus Verilog, 0.7!



On Tuesday 06 April 2004 05:15 pm, Mike Jarabek wrote:
> You are correct, it's not always a bad idea.  I did not qualify my
> statement adequately.  When you use the clock as part of your logic
> you automatically double the frequency that your circuit must operate
> at.  This is probably not a big deal when your clock is under 20MHz,
> but it certainly affects your design at speeds like 100MHz.  If the

Oh, well, yeah.  :)  No arguments there.  In fact, I'm surprised that 
modern microprocessors don't have input-only and output-only buses 
exposed at the physical pin boundary.  I know it takes a lot of pins to 
be able to do so, but egads, with 400+ pin BGAs, you'd think it would 
draw some attention.  I suppose point-to-point buses like HyperTransport 
offer similar functionality to having split, fully synchronous 
interfaces though.

My ultimate goal is to produce an asynchronous, MISC architectre CPU that 
I can use in a future design, specifically because the reduction in EMI 
and power consumption more than outweighs its disadvantages.  But that 
is a very, very long-term project for me, and is not a high priority.  
My immediate priority is to deliver my product via the 65816 
microprocessor, something that I know will work, and do so within 
budget.  Seeing fully asynchronous cores on opencores.org gave me the 
confirmation that such a thing is possible.

> design is fully synchronous, the clock automatically qualifies your
> signals because no state changes happen until a rising (or falling
> edge).

Correct.  However, I still need some combinatorial circuitry to handle 
the three-stating of buses and output enables and such, so that data 
becomes valid prior to a clock edge.

Again, all this happens inside the chip, BUT only is significant for the 
6502/65816 local bus interface.  Everything else uses a split input-only 
and output-only set of buses, using multiplexors to simulate a true 
shared connection.

> Using a clock as a qualifier inside of an FPGA can be dangerous.
> Especially if you are using a look up table based FPGA, if one of the
> signals is asynchronous to the clock, glitches can appear on an

Forgive my naivity, but why is this?  This seems like such a basic thing 
to be able to do.  I know that many FPGAs have dedicated lines to 
support a clock, complete with clock skew compensation buffers 
throughout the chip.  But what if the clock were also routed to a data 
input, for use in a border interface of some kind?

> When you do this in an ASIC, you have to carefully constrain the paths
> when you attempt timing closure.  It's often hard to communicate this

Ahh, I should say that I'll be targeting either a CPLD or FPGA for my 
designs.  No way in hell I can support a custom ASIC (much as I'd love 
to...).  :)

--
Samuel A. Falvo II