¿Cómo usar el Buffer IO con una ubicación definida en VHDL?

3

Estoy intentando programar el sintetizador PLL ADF4158 con SPARTAN 6 FPGA utilizando Microboard LX9. Estudié VHDL por un semestre 4 años antes, y no uso práctico después de eso. Así que necesito la sugerencia de algunos expertos para actualizar mi conocimiento y lograr mi objetivo. A continuación se muestra el diagrama de bloques para explicar mi objetivo.

EstoyplaneandousarlaPCparaescribirlosvaloresdeREGISTROdelADF4158enunBufferIOusandounaherramientaGUIyaquelasconfiguracionesderegistrosonmuycomplejas.Microblazeeselcontroladorprincipal,queestableceunaseñaldehabilitaciónALTAparaqueelbloqueSENDERcopielosvaloresdeREGISTROenelADF4158,cuandofinalizalaescrituradelbúferIOdelaPC.ElADF4158tiene8registroscadaunocon32bits.AcontinuaciónsemuestraeldiagramadebloquesdelbloqueSENDER:

El ADF4158 usa una secuencia de tiempo particular para transferir los valores a los 8 registros. El valor para el registro deseado está identificado por el LSB de los datos de 32 bits de cada secuencia de bits de registro. La línea de selección debe alternarse después de cada transferencia de datos de registro. Imagen de arriba.

A continuación se muestra el código que escribí para establecer el objetivo deseado:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Sender is
Port ( SS : out  STD_LOGIC := 1;
CLK : in  STD_LOGIC;
MOSI : out  STD_LOGIC_VECTOR(31 downto 0);
Enable : in  STD_LOGIC;
Data_IN : in  STD_LOGIC_VECTOR(31 downto 0));
end Sender;

architecture Behavioral of Sender is
variable counter : integer := 0;
variable bitCount : integer := 0;
begin
process(CLK, Enable)
begin
if rising_edge(CLK) and Enable = '1' then
if(bitCount < 320) ---check to avoid 320 bit out of bound
if (counter < 32) ---counter to toggle SS after every 32 bits
SS <= 0;
MOSI <= DataIN(bitCount);
counter <= counter + 1;
bitCount <= bitCount+ 1;
else
SS <= 1;
counter <= 0;
end if;
end if;
end if;
end process;
end Behavioral;

Ahora mi pregunta es, quiero que el SENDER lea los datos del IO Buffer y los envíe al dispositivo ADF4158. ¿Cómo envié la conexión o es posible codificar para leer un búfer IO con una dirección definida? Esta ubicación del búfer IO es aquella en la que la PC almacenará los datos. No estoy seguro de si el código que escribí es correcto, por lo que agradecería cualquier sugerencia de modificación.

    
pregunta dDebug

1 respuesta

1

La información que ha proporcionado para el tiempo y la interfaz de comunicaciones parece ser para el enlace entre el remitente y el dispositivo ADF4158. Si quisiera leer los datos del IO Buffer en el Micro Blaze, tendría que investigar la interfaz entre los buffers de IO y el remitente.

Desde el primer diagrama que publicaste, parece que esa interfaz podría ser una forma, es decir, que los datos se pueden enviar desde Microblaze al búfer IO y luego al remitente, en cuyo caso el búfer IO que los datos que se envían están determinados por el software del Microblaze en lugar de las señales de control externas.

Si desea más ayuda para averiguar cómo controlar la interfaz entre el microblaze y el remitente, publique algunos detalles sobre la interfaz y podemos continuar desde allí.

Espero que esto haya ayudado.

    
respondido por el Gipsy Danger

Lea otras preguntas en las etiquetas