def func_sub(in_a, in_b, c_in): if in_a < in_b: a = util.qt_numbers_bit(32) - in_a b = util.qt_numbers_bit(32) - in_b c_out = 1 output = ((a - b) ^ util.qt_numbers_bit(32)) + 1 - c_in else: output = (in_a - in_b) c_out = 0 return output, c_out
def func_nand(in_a, in_b): maior = in_a if in_a > in_b else in_b if maior == 0: maior = 1 return (in_a & in_b) ^ util.qt_numbers_bit(maior.bit_length())
def sub(in_a, in_b, c_in): maior = in_a if in_a > in_b else in_b bits_a = in_a.bit_length() if maior == 0: maior = 1 if in_a == 0: bits_a = 1 max_bits = util.qt_numbers_bit(maior.bit_length()) p = in_a ^ in_b g = Inv.inverter(in_a ^ in_b, max_bits) output = p ^ c_in c_out = (c_in & g) | (in_b & Inv.inverter(in_a, util.qt_numbers_bit(bits_a))) return output, c_out
# -*- coding: utf-8 -*- import os import pathlib from utils import constants, modules, util pathlib.Path(constants.TV_PATH).mkdir(parents=True, exist_ok=True) pathlib.Path(constants.TB_PATH).mkdir(parents=True, exist_ok=True) FILENAME = os.path.splitext(os.path.basename(os.path.realpath(__file__)))[0].split('_')[0] MAX_BIT_VALUE = util.qt_numbers_bit(constants.N_BITS_INPUT.get(FILENAME)) SEL_RANGE = constants.RANGES.get(FILENAME) formatter = '0' + str(MAX_BIT_VALUE.bit_length()) + 'b' with open(constants.TV_PATH + constants.TV_NAME.get(FILENAME), 'w') as f: for a in range(0, MAX_BIT_VALUE + 1): for b in range(0, MAX_BIT_VALUE + 1): for c in range(0, MAX_BIT_VALUE + 1): for d in range(0, MAX_BIT_VALUE + 1): for s in range(0, SEL_RANGE): selection = str(format(s, '02b')) s1 = int(selection[0:1]) s2 = int(selection[1:2]) f.write(str(s1) + str(s2) + constants.DELIMITER + format(a, formatter) + constants.DELIMITER + format(b, formatter) + constants.DELIMITER + format(c, formatter) + constants.DELIMITER + format(d, formatter) + constants.DELIMITER + format(modules.Mux.mux4_v2(a, b, c, d, s), formatter) + '\n')
# -*- coding: utf-8 -*- import os import pathlib from utils import constants, modules, util pathlib.Path(constants.TV_PATH).mkdir(parents=True, exist_ok=True) pathlib.Path(constants.TB_PATH).mkdir(parents=True, exist_ok=True) FILENAME = os.path.splitext(os.path.basename( os.path.realpath(__file__)))[0].split('_')[0] MAX_BIT_VALUE_INPUT_ADDR = util.qt_numbers_bit( constants.N_BITS_INPUT.get(FILENAME)) MAX_BIT_VALUE_INPUT_REG = util.qt_numbers_bit( constants.N_BITS_INPUT.get(FILENAME + '_reg')) formatter_addr = '0' + str(MAX_BIT_VALUE_INPUT_ADDR.bit_length()) + 'b' formatter_reg = '0' + str(MAX_BIT_VALUE_INPUT_REG.bit_length()) + 'b' ''' with open(constants.TV_PATH + constants.TV_NAME.get(FILENAME), 'w') as f: for a in range(0, MAX_BIT_VALUE_INPUT_ADDR + 1): for r in range(0, MAX_BIT_VALUE_INPUT_REG + 1): f.write(format(a, formatter_addr) + constants.DELIMITER + format(r, formatter_reg) + constants.DELIMITER + modules.Signal.shift_left_aggr(a, r, constants.RANGES.get(FILENAME), constants.N_BITS_INPUT.get(FILENAME + '_reg'), constants.N_BITS_OUTPUT.get(FILENAME)) + '\n') ''' with open(constants.TV_PATH + constants.TV_NAME.get(FILENAME), 'w') as f: a = 0