Quiero crear un sistema que consta de dos espacios de registro (A y B, consulte la figura a continuación). El propósito es permitir el cambio instantáneo de configuración. Cuando S = 0, los registros en A se seleccionarán para escritura (nueva configuración), y los registros en B se seleccionarán para lectura (configuración en ejecución). Cuando S = 1, lo contrario es cierto.
+
|
|
+-------v--------+ not(S)
| WRITE SELECT <---+
+----------------+
|0 |1
| |
+-v-+ +-v-+
| | | |
| A | | B |
| | | |
+-+-+ +-+-+
| |
| |
+--v---------v---+ S
| READ SELECT <---+
+-------+--------+
|
|OUT
v
Mi pregunta es sobre cómo codificar la selección de lectura en VHDL. Suponiendo un solo registro de configuración:
signal S : integer range 0 to 1;
type slv_ary_t is array (integer range <>) of standard_logic_vector(31 downto 0);
signal reg_space : slv_ary_t(1 downto 0)
signal OUT : standard_logic_vector(31 downto 0);
begin
-- What is the difference between this:
OUT <= reg_space(S);
-- and this
OUT <= reg_space(0) when S=0 else reg_space(1);
Mi entendimiento ahora es que esto resultará en el mismo hardware después de la síntesis. ¿Es eso correcto?