Está en la página 1de 14

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<=contador+1;
if contador=12500000 then
contador<=0;
clk_out<=not clk_out;
end if;
end if;
end process;
end Behavioral;
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 <= Data_IN;
end if;
end if;
end process;
end comp_reg_paralelo;
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<0>" LOC = "J14";
NET "SALIDA<1>" LOC = "J15";
NET "SALIDA<2>" LOC = "K15";
NET "SALIDA<3>" LOC = "K14";
NET "SALIDA<4>" LOC = "E17";
NET "SALIDA<5>" LOC = "P15";
NET "SALIDA<6>" LOC = "F4";
NET "SALIDA<7>" LOC = "R4";

## Switches
NET "sw<0>" LOC = "G18";
NET "sw<1>" LOC = "H18";
NET "sw<2>" LOC = "K18";
NET "sw<3>" LOC = "K17";
NET "sw<4>" LOC = "L14";
NET "sw<5>" LOC = "L13";
NET "sw<6>" LOC = "N17";
NET "sw<7>" 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.