library ieee; use ieee.std_logic_1164.all; -- TYPEDEF type ts_uternary is ( 'U', -- Uninitialized '?', -- Forcing Unknown '+', -- Forcing + '0', -- Forcing 0 '-', -- Forcing - 'X', -- Don't care 'P', -- Weak + 'Z', -- Weak 0 'M' -- Weak - ); type ts_uternary_touple is array(natural range <>) of ts_utenary; function "&" ( lhs, rhs : ts_uternary) return ts_uternary_touple(0 to 1) begin return (0=> lhs, 1=>rhs); end "&"; function draft_add(lhs, rhs : ts_uternary) return ts_uternary is -- Basic add-operant draft, not covering all the cases yet. begin case(a&b) is --concat the two operants for convenience when "++" <= return '-'; when "+0" <= return 'P'; when "00" <= return '0'; when "0-" <= return 'M'; when "--" <= return '+'; when "-+" <= return '0'; when others <= return draft_add(b,a); --communative law end case; return '?'; --When in doubt, return no significant value end draft_add; function "+" ( lhs, rhs : ts_uternary) return ts_uternary is begin return draft_add(lhs, rhs); end "+";
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.