VHDL-Testbench für eine ALU: Simulation mit Dateiein- und -ausgabe

Informatik2,34 KB

VHDL-Testbench für eine ALU

Die folgende Testbench simuliert eine arithmetisch-logische Einheit (ALU) in VHDL. Die Testdaten werden aus einer Datei eingelesen und die Ergebnisse in eine Ausgabedatei geschrieben.

Bibliotheken und Typdefinitionen

Zu Beginn werden die benötigten Bibliotheken eingebunden und der Speichertyp memoria definiert:

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.STD_LOGIC_ARITH.ALL;
use std.textio.all;
use ieee.std_logic_textio.all;

Entity und Architektur

Die Testbench besitzt keine Ports. Die Architektur sim enthält die Taktkonstante TCLK sowie die Komponentendeklaration der ALU.

Taktgenerierung

Das Taktsignal clk_i wird asymmetrisch erzeugt: Es ist nach 25 ns high und nach 75 ns low, bei einer Periodendauer von 10 ns mit Tastverhältnis angepasst.

Signaldeklarationen

Es werden die Signale a_i, b_i, opr_i, ovfw_sign_i und resultado_i deklariert. Die Konstante N ist auf 4 gesetzt, sodass die Datenbreite 4 * N = 16 Bit beträgt.

Instanziierung der DUT

Die ALU (Device Under Test) wird über eine generic map und eine port map eingebunden.

Testprozess

Der Prozess arbeitet in zwei Durchläufen:

  1. Addition (opr_i = '0'): Die Werte aus datos.txt werden eingelesen, addiert und das Ergebnis mit dem Überlaufflag in resultado.txt geschrieben.
  2. Subtraktion (opr_i = '1'): Gleiches Vorgehen. Bei gesetztem Überlaufflag wird ein Minuszeichen ausgegeben.

Nach Abschluss beider Durchläufe werden die Dateien geschlossen und mit einer Assertion wird die Meldung "fin simulación" ausgegeben.

Hinweise

  • Die Wartezeit wait for 10 ns stellt sicher, dass die ALU das Ergebnis berechnen kann.
  • Die Variablen buf, buf2 und dat2 dienen als Zwischenspeicher für das Lesen und Schreiben.
  • Die Datei datos.txt muss im Hexadezimalformat vorliegen, da hread und hwrite verwendet werden.

Herunterladen

PDF Word HTML