of 14/14
IMPLEMENTACIÓN BÁSICA DE PICOBLAZE Danilo A. García H.

Implementacion Basica de Picoblaze (1)

  • View
    22

  • Download
    0

Embed Size (px)

Text of Implementacion Basica de Picoblaze (1)

  • IMPLEMENTACIN BSICA DE PICOBLAZE

    Danilo A. Garca H.

  • Objetivo

    O Implementar sobre la FPGA un procesador

    PicoBlaze con una interfaz de entrada

    paralela y una interfaz de salida paralela

    ambas de 8 bits Se presenta el esquema

    general y los cdigos de cada bloque-

    adems del cdigo en assembler.

  • Componentes para la implementacin

    O Un Divisor de frecuencia para el reloj general (en

    el ejemplo se hace inicialmente a 2Hz para

    observar el comportamiento)

    O Dos registros paralelo-paralelo

    O El KCPSM3 (microprocesador)

    O Memoria de programa ROM (IO_BASICO)

    O Una AND para decodificar la direccin de salida.

    O DIPSW, LEDs y dos segmentos del 7 segmentos

  • Cdigo en Assembler ; Ejemplo bsico que lee un dato de entrada de 8 bits y lo pasa al puerto de salida

    ; Generacin del archivo VHDL con el cdigo para la memoria de programa

    VHDL "ROM_FORM.vhd", "IO_BASICO.vhd", "IO_BASICO"

    ; Definicin de direcciones de puertos de entrada y salida

    DIPSW DSIN $01

    LEDs DSOUT $02

    ; Definicin de nombres para los registros que se utilizan

    TEMP EQU s0

    ; COMIENZO DEL PROGRAMA PRINCIPAL

    ORG $0 ; El programa comienza en la Direccin $000.

    INICIO:

    IN TEMP,DIPSW

    OUT TEMP,LEDS

    JUMP INICIO

  • Divisor de frecuencia (2Hz) library IEEE;

    use IEEE.STD_LOGIC_1164.ALL;

    entity divisor_50 is

    Port ( clk : in STD_LOGIC;

    clk_out : inout STD_LOGIC);

    end divisor_50;

    architecture Behavioral of divisor_50 is

    signal contador: integer range 0 to 12500000 :=0 ;

    begin

    process(clk)

    begin

    if clk' event and clk='1' then

    contador

  • Registro Paralelo - Paralelo library IEEE;

    use IEEE.STD_LOGIC_1164.ALL;

    entity reg_paralelo is

    Port ( Data_IN : in STD_LOGIC_VECTOR (7 downto 0);

    Data_OUT : out STD_LOGIC_VECTOR (7 downto 0);

    clk_i : in STD_LOGIC;

    E : in STD_LOGIC);

    end reg_paralelo;

    architecture comp_reg_paralelo of reg_paralelo is

    begin

    process (clk_i,Data_IN,E)

    begin

    if E = '1' then

    if (clk_i'event and clk_i='0') then

    Data_OUT

  • Archivo UCF (conexiones de pines)

    NET "clk" LOC = "B8";

    ## 7 segment display

    NET "CAT_A" LOC = "L18"; # Para visualizar el habilitador del registro de salida

    NET "DP0" LOC = "C17"; # Para visualizar el reloj

    ## Leds

    NET "SALIDA" LOC = "J14";

    NET "SALIDA" LOC = "J15";

    NET "SALIDA" LOC = "K15";

    NET "SALIDA" LOC = "K14";

    NET "SALIDA" LOC = "E17";

    NET "SALIDA" LOC = "P15";

    NET "SALIDA" LOC = "F4";

    NET "SALIDA" LOC = "R4";

    ## Switches

    NET "sw" LOC = "G18";

    NET "sw" LOC = "H18";

    NET "sw" LOC = "K18";

    NET "sw" LOC = "K17";

    NET "sw" LOC = "L14";

    NET "sw" LOC = "L13";

    NET "sw" LOC = "N17";

    NET "sw" LOC = "R17";

  • Tenga en cuenta:

    O Los buffer utilizados:

    BUFG se utiliza para amplificar relojes

    OBUF se utiliza para salida a puertos

    O El registro paralelo con habilitador E activo

    con alto y el reloj con flanco de bajada.

    O El inversor puesto que el display es de

    nodo comn

  • Procedimiento

    1. El VHDL de la ROM se genera con el pBlazIDE y la plantilla ROM_from.vhd

    2. Cree los smbolos de cada componente

    3. Haga un esquemtico como lo muestra la figura.

    4. Verifique que el reloj est dando sus tics (Punto del 7 segmentos)

    5. Verifique la seal de habilitacin del puerto de salida (segmento A del 7 segmentos)

    6. Cambie las entradas en el DIPSW, estas deben replicarse en los LEDs. (el efecto es lento puesto que el reloj es a 2 Hz)

  • El proyecto

  • Es normal

    O Que en la sntesis salgan warnings debidos

    al KCPSM3 (hay foros que indican como

    eliminarlos o minimizarlos)

    O Que en la implementacin salgan warnings

    debido a los pines del KCPSM3 que no se

    usan

    O Que la generacin del archivo de

    programacin resulte sin errores ni warnings

  • Ajuste posterior

    O Modifique el divisor para que el reloj sea a

    1 MHz, sintetice de nuevo, implemente y

    genere el archivo de programacin.

    O Programe el FPGA

    O Pruebe que ya no se nota la respuesta lenta

    desde el cambio del DIPSW hasta el efecto

    en los LEDs.

    O Con esto ya tiene la base para continuar

    trabajando en este tercio.

  • GRACIAS