Capítulo 2 de Un Bit a Datos. Fport

download Capítulo 2 de Un Bit a Datos. Fport

of 5

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