moj_pakiet.vhdl

-- uwidaczniamy biblioteke IEEE
library ieee;

-- uzywamy z tej biblioteki wszystkich elementow z pakietu std_logic_1164
-- pozwala to na pisanie std_logic zamast ieee.std_logic_1164.std_logic
use ieee.std_logic_1164.all;
-- oraz z pakietu numeric_std
use ieee.numeric_std.all;


-- deklarujemy nasz wlasny pakiet
package moj_pakiet is
  -- w ramach niego bedzie funkcja to_bits()
  function to_bits(liczba, dlugosc_wektora : in integer) return  std_logic_vector;
  -- oraz to_int()
  function to_int(wartosc_bitowa : in std_logic_vector) return integer;
  -- procedury w odruznieniu od funkcji moga modyfikowac przekazane do nich argumenty ...
  procedure zwieksz(dane: inout std_logic_vector; ovf: out std_logic);
end package;

-- definiujemy zawartosc naszego pakietu
package body moj_pakiet is
  function to_bits(liczba, dlugosc_wektora : in integer) return  std_logic_vector is
    begin
      return std_logic_vector(to_unsigned(liczba,dlugosc_wektora));
  end function;
  
  function to_int(wartosc_bitowa : in std_logic_vector) return integer is
    begin
      return to_integer(unsigned(wartosc_bitowa));
  end function;
  
  procedure zwieksz(dane: inout std_logic_vector; ovf: out std_logic) is
    begin
      -- petkla for po calym zakresie binarnym wektora wejsciowo/wyjsciowego
      -- to cos po ' nazywa sie atrybutem ...
      -- xx'range zwraca zakres xx'left to xx'right
      -- xx'right jest maksymalnym indeksem wektora
      -- ...
      F1: for i in dane'range loop
        -- przypisanie do zmiennej
        dane(i) := not dane(i);
        -- przerwanie petli (tak jak break w C)
        exit when dane(i) = '1';
        -- pomiedzy exit a when mozna podac etykiete petli z ktorej chemy wyjsc ...
        
        -- jezeli petla doszla do konca
        -- nieosiagajac warunku przerwania to mamy przepelnienie
        if i = dane'right then
          ovf := '1';
        else
          -- galaz else jest obowiazkowa gdy nie chemy tworzyc zatrzaskow
          ovf := '0';
        end if;
      end loop;
  end procedure;
end;

XHTML generated by highlight (http://www.andre-simon.de/) from moj_pakiet.vhdl



Copyright (c) 1999-2015, Robert Paciorek (http://www.opcode.eu.org/), BSD/MIT-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This text/program is free document/software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/programing/vhdl/moj_pakiet.vhdl) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: '2014-01-07 19:27:39 (UTC)' (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).