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.