You are on page 1of 5

Search

Obijuan / open-fpga-verilog-tutorial
Code

Issues 0

Pull requests 0

Watch
Wiki

Pulse

13

Star

31

Fork

15

Graphs

Captulo 2: De un bit a datos. Fport


Manuel F. Jaimes edited this page Feb 14, 2016 20 revisions

Pages 40

Inicio (EN)

Ejemplos de este captulo en github

Captulos

Introduccin
Ahora en vez de 1 bit sacaremos 4, y los mostraremos por los leds. Se trata de un valor fijo, que
est "cableado por hardware". Si queremos visualizar otro nmero por los leds, habr que sintetizar
otro circuito.

Este componente lo denominaremos Fport (Fixed port). Tiene un bus de salida de 4 bits,
etiquetado como data, que est cableado al valor binario 1010

Fport.v: Descripcin del hardware


Este circuito es muy parecido al del tutorial anterior (setbit.v) pero en vez de tener 1 bit de salida
tiene 4. Se describe as:
//-- Fichero Fport.v
module Fport(output [3:0] data);
//-- La salida del modulo son 4 cables
wire [3:0] data;
//-- Sacar el valor por el bus de salida
assign data = 4'b1010; //-- 4'hA
endmodule

La salida ahora es un array de 4 cables. Esto se denota poniendo [3:0] delante del nombre. Para
realizar la asignacin escribimos el nmero en binario usando la notacin de Verilog: Primero el
nmero de bits, luego el carcter ', a continuacin la base del nmero (b para binario) y por ltimo los
4 dgitos binarios. Este mismo nmero se podra expresar mediante un nico dgito hexadecimal
mediante: 4'hA. Tambin lo podramos poner en decimal como 4'd10

0 You are leaving the privative


sector (EN)
1 Hola mundo! (EN)
2 De un bit a datos (EN)
3 Puerta NOT (EN)
4 Contador de 26 bits (EN)
5 Prescaler de N bits (EN)
6 Mltiples prescalers
7 Contador de 4 bits con prescaler
8 Registro de 4 bits
9 Inicializador
10 Registro de desplazamiento
11 Multiplexor de 2 a 1
12 Multiplexor de M a 1
13 Inicializando registros
14 Registro de N bits con reset
sncrono
15 Divisor de frecuencias
16 Contador de segundos
17 Generando tonos audibles
18 Tocando notas
19 Secuenciando notas
20 Comunicaciones serie
asncronas
21 Baudios y transmisin
22 Reglas de diseo sncrono
23 Controladores y autmatas
finitos
24 Unidad de transmisin serie
asncrona
25 Unidad de recepcin serie
asncrona
26 Memoria ROM
27 Memoria ROM genrica
28 Memoria RAM
29 Puertas triestado
30 Hacia el microprocesador y ms
all
Clone this wiki locally

https://github.com/Obijuan/open-fpga-ve

Clone in Desktop

converted by W eb2PDFConvert.com

Sntesis en la FPGA
Cada uno de los 4 bits de la salida data se saca por los pines de la fpga donde estn conectados los
4 leds:

Esto se especifica en el fichero Fport.pcf:


set_io
set_io
set_io
set_io

data[0]
data[1]
data[2]
data[3]

99
98
97
96

Para realizar la sntesis entramos en el directorio tutorial/T02-Fport y ejecutamos el comando make


sint:
$ make sint

En el mensaje final obtenemos un resumen de los recursos de la FPGA consumidos y los que
quedan libres:
After placement:
PIOs
2 / 96
PLBs
1 / 160
BRAMs
0 / 16

Estos recursos son:

PIO = Programmable I/O (Entradas / salidas programables)


PLBs = Programmable Logic Blocks (Bloques lgicos programables)
BRAMs = Block RAM Memory (Bloques de memoria)
Ahora cargamos en la fpga el fichero Fport.bin:
$ iceprog Fport.bin

Al terminar, dos leds estarn encendidos y dos apagados, ya que estamos enviando el valor 1010:

converted by W eb2PDFConvert.com

Simulacin
El banco de pruebas es similar al del captulo anterior, pero ahora en vez de comprobar slo un bit
se comprueba el patrn de 4 bits. Si no es igual al esperado se emite un mensaje de error. El
diagrama es el siguiente:

El banco de pruebas (Fport_tb.v) consta de tres elementos:


El componente a probar: Fport (En la literatura se conoce como uut: unit under test)
El bloque de comprobacin
El cable DATA
El cdigo del banco de pruebas es:

converted by W eb2PDFConvert.com

//-- Fport_tb.v
module Fport_tb;
//-- Bus de 4 cables para conectarlos a la salida del componente Fport
wire [3:0] DATA;
//--Instanciar el componente. Conectar la salida a DATA
Fport FP1 (
.data (DATA)
);
//-- Comenzamos las pruebas
initial begin
//-- Fichero donde almacenar los resultados
$dumpfile("Fport_tb.vcd");
$dumpvars(0, Fport_tb);
//-- Pasadas 10 unidades de tiempo comprobamos
//-- si el cable tiene el patron establecido
# 10 if (DATA != 4'b1010)
$display("---->ERROR! Salida Erronea");
else
$display("Componente ok!");
//-- Terminar la simulacion 10 unidades de tiempo despues
# 10 $finish;
end
endmodule

Observamos que la salida del componente es data, y le hemos conectado el cable DATA, para
enfatizar el hecho de que los nombres pueden ser diferentes
Para realizar la simulacin ejecutamos el comando make sim:
$ make sim
Este es el resultado con gtkwave:

Comprobamos que la salida siempre est al valor 1010

Ejercicios propuestos
Cambiar el valor para sacar otro patrn por los leds. Simular, sintetizar y cargar en la FPGA
Modificar el componente para que el bus sea de 5 bits en vez de 4. Sacar el quinto bit por el pin
44 de la FPGA (no tiene led asociado)

Conclusiones
converted by W eb2PDFConvert.com

TODO

FPGA Libres: [Wiki] [Repo]

2016 GitHub, Inc. Terms Privacy Security Contact Help

Status API Training Shop Blog About

converted by W eb2PDFConvert.com