Capítulo 2 de Un Bit a Datos. Fport
-
Upload
kevinarias -
Category
Documents
-
view
214 -
download
0
Transcript of Capítulo 2 de Un Bit a Datos. Fport
-
8/17/2019 Capítulo 2 de Un Bit a Datos. Fport
1/5
Inicio (EN)
Capítulos
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 Múltiples 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 resetsíncrono
15 Divisor de frecuencias
16 Contador de segundos
17 Generando tonos audibles
18 Tocando notas
19 Secuenciando notas
20 Comunicaciones serie
asíncronas
21 Baudios y transmisión
22 Reglas de diseño síncrono
23 Controladores y autómatas
finitos
24 Unidad de transmisión serieasíncrona
25 Unidad de recepción serie
asíncrona
26 Memoria ROM
27 Memoria ROM genérica
28 Memoria RAM
29 Puertas triestado
30 Hacia el microprocesador y más
allá
Clone this wiki locally
Capítulo 2: De un bit a datos. FportManuel F. Jaimes edited this page Feb 14, 2016 · 20 revisions
Ejemplos de este capítulo en github
Introducción
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 número por los leds, habrá que sintetizar
otro circuito.
Este componente lo denominar emos Fport (Fixed port). Tiene un bus de salida de 4 bits,
etiquetado como data, que está cableado al valor binario 1010
Fport.v: Descripción 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 asignación escribimos el número en binario usando la notación de Verilog: Primero el
número de bits, luego el carácter ', a continuación la base del número (b para binario) y por último los
4 dígitos binarios. Este mismo número se podría expresar mediante un único dígito hexadecimal
mediante: 4'hA. También lo podríamos poner en decimal como 4'd10
13 31 15Watch Star ForkObijuan / open-fpga-verilog-tutorial
Code Issues 0 Pull requests 0 Wiki Pulse Graphs
Pages 40
https://github.com/Obijua
Clone in Desktop
Search
converted by Web2PDFConvert.com
https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-25%3A-Unidad-de-recepci%C3%B3n-serie-as%C3%ADncronahttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-3%3A-Puerta-NOT.-Invhttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Chapter-3%3A-NOT-Gate.-Invhttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-1%3A-%C2%A1Hola-mundo%21-Setbithttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Chapter-1%3A-%C2%A1Hello-world%21-Setbithttps://github.com/https://github.com/personalhttps://github.com/open-sourcehttps://github.com/businesshttps://github.com/explorehttps://github.com/pricinghttps://github.com/pricinghttps://github.com/bloghttps://help.github.com/https://github.com/login?return_to=%2FObijuan%2Fopen-fpga-verilog-tutorial%2Fwiki%2FCap%25c3%25adtulo-2%3A-De-un-bit-a-datos.-Fporthttps://github.com/join?source=header-repohttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-30%3A-Hacia-el-microprocesador-y-m%C3%A1s-all%C3%A1http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDFhttps://github.com/Obijuan/open-fpga-verilog-tutorial/tree/master/tutorial/ICESTICK/T02-Fporthttps://windows.github.com/https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-30%3A-Hacia-el-microprocesador-y-m%C3%A1s-all%C3%A1https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-29%3A-Puertas-triestadohttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-28%3A-Memoria-RAMhttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-27%3A-Memoria-ROM-gen%C3%A9ricahttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-26%3A-Memoria-ROMhttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-25%3A-Unidad-de-recepci%C3%B3n-serie-as%C3%ADncronahttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-24%3A-Unidad-de-transmisi%C3%B3n-serie-as%C3%ADncronahttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-23%3A-Controladores-y-aut%C3%B3matas-finitoshttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-22%3A-Reglas-de-dise%C3%B1o-s%C3%ADncronohttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-21%3A-Baudios-y-transmisi%C3%B3nhttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-20%3A-Comunicaciones-serie-as%C3%ADncronashttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-19%3A-Secuenciando-notashttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-18%3A-Tocando-notashttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-17%3A-Generando-tonos-audibleshttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-16%3A-Contador-de-segundoshttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-15%3A-Divisor-de-frecuenciashttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-14%3A-Registro-de-N-bits-con-reset-s%C3%ADncronohttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-13%3A-Inicializando-registroshttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-12%3A-Multiplexor-de-M-a-1https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-11%3A-Multiplexor-de-2-a-1https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-10%3A-Registro-de-desplazamientohttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-9%3A-Inicializadorhttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-8%3A-registro-de-4-bitshttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-7%3A-Contador-de-4-bits-con-prescalerhttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-6%3A-Multiples-prescalershttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Chapter-5%3A-N-bit-prescalerhttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-5%3A-Prescaler-de-N-bitshttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Chapter-4%3A-26-bit-counterhttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-4%3A-Contador-de-26-bitshttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Chapter-3%3A-NOT-Gate.-Invhttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-3%3A-Puerta-NOT.-Invhttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Chapter-2%3A-From-bit-to-data.-Fporthttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-2%3A-De-un-bit-a-datos.-Fporthttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Chapter-1%3A-%C2%A1Hello-world%21-Setbithttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-1%3A-%C2%A1Hola-mundo%21-Setbithttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Chapter-0%3A-you-are-leaving-the-privative-sectorhttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-0%3A-you-are-leaving-the-privative-sectorhttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Home_ENhttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Homehttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-2:-De-un-bit-a-datos.-Fport/_historyhttps://github.com/Obijuan/open-fpga-verilog-tutorial/graphshttps://github.com/Obijuan/open-fpga-verilog-tutorial/pulsehttps://github.com/Obijuan/open-fpga-verilog-tutorial/wikihttps://github.com/Obijuan/open-fpga-verilog-tutorial/pullshttps://github.com/Obijuan/open-fpga-verilog-tutorial/issueshttps://github.com/Obijuan/open-fpga-verilog-tutorialhttps://github.com/Obijuan/open-fpga-verilog-tutorialhttps://github.com/Obijuanhttps://github.com/Obijuan/open-fpga-verilog-tutorial/networkhttps://github.com/login?return_to=%2FObijuan%2Fopen-fpga-verilog-tutorialhttps://github.com/Obijuan/open-fpga-verilog-tutorial/stargazershttps://github.com/login?return_to=%2FObijuan%2Fopen-fpga-verilog-tutorialhttps://github.com/Obijuan/open-fpga-verilog-tutorial/watchershttps://github.com/login?return_to=%2FObijuan%2Fopen-fpga-verilog-tutorialhttps://help.github.com/https://github.com/bloghttps://github.com/pricinghttps://github.com/login?return_to=%2FObijuan%2Fopen-fpga-verilog-tutorial%2Fwiki%2FCap%25c3%25adtulo-2%3A-De-un-bit-a-datos.-Fporthttps://github.com/join?source=header-repohttps://github.com/explorehttps://github.com/businesshttps://github.com/open-sourcehttps://github.com/personalhttps://github.com/
-
8/17/2019 Capítulo 2 de Un Bit a Datos. Fport
2/5
Síntesis en la FPGA
Cada uno de los 4 bits de la salida data se saca por los pines de la fpga donde están conectados los
4 leds:
Esto se especifica en el fichero Fport.pcf :
set_io data[0] 99
set_io data[1] 98
set_io data[2] 97
set_io data[3] 96
Para realizar la síntesis 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 lógicos programables)
BRAMs = Block RAM Memory (Bloques de memoria)
Ahora cargamos en la fpga el fichero Fport.bin:
$ iceprog Fport.bin
Al terminar, dos leds estarán encendidos y dos apagados, ya que estamos enviando el valor 1010:
converted by Web2PDFConvert.com
http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDF
-
8/17/2019 Capítulo 2 de Un Bit a Datos. Fport
3/5
Simulación
El banco de pruebas es similar al del capítulo anterior, pero ahora en vez de comprobar sólo un bit
se comprueba el patrón 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 comprobación
El cable DATA
El código del banco de pruebas es:
converted by Web2PDFConvert.com
http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDF
-
8/17/2019 Capítulo 2 de Un Bit a Datos. Fport
4/5
//-- 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 simulación 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 patrón 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 pin44 de la FPGA (no tiene led asociado)
Conclusiones
converted by Web2PDFConvert.com
http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDF
-
8/17/2019 Capítulo 2 de Un Bit a Datos. Fport
5/5
TODO
FPGA Libres: [Wiki] [Repo]
Status API Training Shop Blog About© 2016 GitHub, Inc. Terms Privacy Security Contact Help
d b W b2PDFC
http://www.web2pdfconvert.com/?ref=PDFhttp://www.web2pdfconvert.com/?ref=PDFhttps://help.github.com/https://github.com/contacthttps://github.com/securityhttps://github.com/site/privacyhttps://github.com/site/termshttps://github.com/abouthttps://github.com/bloghttps://shop.github.com/https://training.github.com/https://developer.github.com/https://status.github.com/https://github.com/Obijuan/open-fpga-verilog-tutorialhttps://github.com/Obijuan/open-fpga-verilog-tutorial/wiki