¿puede el cuarteto sintetizar un bus de tres estados?

0
  1. ¿Se sintetizaría el siguiente Verilog (en el Quartus de Altera) en un bus de 1024 dispositivos triestatales conectados a un cable?

  2. ¿Será más rápido (latencia de reloj) que un árbol binario de 1024 or-gates?

'

module TriBus #(parameter N = 1024)(inb, enb, outb);

  input inb, enb;
  output outb;
  wire [N:1]inb;
  wire [N:1]enb;
  wire outb;
  wire [N:1] orbus;

  genvar I;
  generate
    for (I=1; I<N; I=I+1) begin
      assign outb = (enb[I])? inb[I] : 1'bz;
    end
  endgenerate
endmodule

'

    
pregunta Yosi Ben-Asher

3 respuestas

2

Las partes internas de FPGA realmente no se actualizan, es una característica de los controladores IO.

Ignorar los problemas de sintaxis de verilog (no conozco el lenguaje) que puede construir, pero es una mala idea, ya que esperaría que estuviera representado en la realidad por un gran mux apedreado, siendo lo más cercano el tejido interno puede llegar a un bus de tres estados, también es posible que no se construya, como digo, no sé verilog.

Es posible que desee observar detenidamente el tamaño de sus LUT de partes antes de hacer un árbol binario; algunas de las partes más modernas tienen 6 LUTS de entrada que pueden hacer que otra cosa sea óptima.

También sugeriría que quizás estés pensando demasiado cerca del hardware, escribiendo un mux algo como (en VHDL) outb < = inb (selector); es probable que se sintetice en algo razonablemente óptimo y que no tenga posibles estados 'X' o 'Z' en su salida.
Mi señal de selección realmente quiere ser un codificador de prioridad sobre tus líneas enb, a menos que puedas hacer algo más razonable allí, ¿las habilitaciones individuales como esto son un dolor?

Saludos, Dan.

    
respondido por el Dan Mills
1

Algunos FPGA solían tener controladores internos de tres estados y enrutamiento (cableado interno). El Xilinx Spartan-II fue uno de estos. Trabajé en un diseño que explotó esto muy ingeniosamente para producir un circuito muy denso, por lo que fue útil.

Sin embargo, cuando se pueden habilitar varios controladores en una sola red, el FPGA consume más corriente, como ocurre cuando las entradas lógicas provienen de cables no accionados. La corrupción de las señales por parte de los conductores que compiten entre sí y la posibilidad de cables no controlados hace que el tiempo sea más complicado de predecir.

Por lo tanto, se abandonaron las estadísticas internas en favor de los diseños internos FPGA totalmente unidireccionales. Por lo que he visto, todos los dispositivos Altera y Xilinx en los últimos diez años o más han seguido este camino.

    
respondido por el TonyM
0

La distinción principal entre un PLD y un FPGA es que un elemento PLD típico tendrá dispositivos que, junto con un subconjunto arbitrario de varias señales, mientras que un FPGA tendrá cada entrada de cada dispositivo interno conectado a exactamente una salida. El uso de la lógica de tres estados sería fundamentalmente incompatible con este modelo, excepto en los casos en que exactamente un dispositivo se habilitaría en un momento dado. En esos casos, uno podría simular el comportamiento de los dispositivos de tres estados en el bus al tener salidas que siempre están habilitadas pero alimentándolas en un multiplexor. Dado que una implementación de este tipo generalmente sería más rápida que una implementación que utiliza un bus de tres estados (ya que la propiedad del bus de conmutación normalmente requeriría que la liberación y la adquisición del bus se realicen como pasos separados para garantizar que esto último no ocurra primero), tres estados Los autobuses generalmente tendrían pocas ventajas fuera de las situaciones, excepto en los casos en que permiten un enrutamiento más eficiente de señales que no son críticas para la velocidad. Incluso en esos casos, es posible intercambiar cierta eficiencia de enrutamiento por velocidad (por ejemplo, si uno tiene 8 grupos de 8 entradas dispersas alrededor del chip, ejecutar las 64 entradas a un solo mux de 8 bits requeriría correr 64 cables a un punto común. Al usar buses de tres estados, uno podría tener un búfer de 3 estados en cada entrada controlado por uno de los 8 cables habilitados y alimentar uno de los 8 cables de datos (solo 16 cables en total) o con más circuitos en cada entrada uno podría cortar eso a 3 cables seleccionados y 8 cables de datos - 11 en total. Un gran ahorro. Por otro lado, es posible lograr una eficiencia de espacio de enrutamiento comparable a la del enfoque de búfer de tres estados si uno usa siete conjuntos de ocho multiplexores de 2 vías en lugar de un conjunto de ocho multiplexores de 8. La consecuencia es que si bien los buses de 3 estados a veces tienen algunas ventajas, rara vez son lo suficientemente importantes como para justificar el esfuerzo de diseño requerido para usarlos.

    
respondido por el supercat

Lea otras preguntas en las etiquetas