VHDL kód pre násobenie dvoch integerovAhoj, mojou úlohou je navrhnúť VHDL kód, ktorý má byť parametrizovateľný pre vstupný počet parametrov:Premenné: A, B , Q , C a PC sú registre.PC slúži ako počítadlo cyklov.Mám používať C#Q#A pre zreťazenie registrov.Algoritmus násobenia integerov:BEGINC#Q :=0 || PC:=nWHILE(PC>0)IF A(0) = 1 THENC#Q := Q+BENDIFC#Q#A :=0 # SR1(C#Q#A)||PC := PC - 1ENDENDEšte mám k tomu obrázok násobenia integerov v binárnom kóde. Neviem sa ani odraziť, ako mám formulovať ten kód, aby bol parametrizovateľný? Ako mám zapísať tie vstupné registre? Mám použiť štandardný in std_logic? Vďaka!https://i.nahraj.to/f/1Tj2.PNG Pod pojmom parametrizovateľný predpokladám majú na mysli, že šírka zbernice bude podľa nejakého parametra, tzn. pozri sa na generic - generic VHDL. Mám problém s test benchom:library IEEE;use IEEE.Std_logic_1164.all;use IEEE.Numeric_Std.all;entity nasobenie_tb isgeneric ( DATA_WIDTH : natural := 4 );end;architecture bench of nasobenie_tb is component nasobenie generic ( DATA_WIDTH : natural := 2 ); port ( a : in signed ((DATA_WIDTH-1) downto 0); b : in signed ((DATA_WIDTH-1) downto 0); q : out signed ((2*DATA_WIDTH-1) downto 0) ); end component; signal a: signed ((DATA_WIDTH-1) downto 0); signal b: signed ((DATA_WIDTH-1) downto 0); signal q: signed ((2*DATA_WIDTH-1) downto 0) ;begin -- Vlozenie hodnot pre parameter generic !! uut: nasobenie generic map ( DATA_WIDTH => DATA_WIDTH ) port map ( a => a, b => b, q => q ); stimulus: process begin a ...
VHDL kód pre násobenie dvoch integerov |