over VHDL-code voor divisie en multyplying

C

Cutey

Guest
hii alle
als er iemand mij vertellen hoe we kunnen programmeren in VHDL-code voor sivision en multyplying zonder gebruik te maken (*) en (/)??
thankd vooraf

 
hoi,

Door het verschuiven van databit rechts zodra u krijgt vermenigvuldigen met 2, en door het verschuiven van gegevens die nog een keer zult u verdelen krijgen door 2.

Ook vermenigvuldiging is niets anders dan opeenvolgende toevoeging en verdeling is niets anders dan opeenvolgende subtratction dit ook u kunt gebruiken.

HTH,
--
Shitansh Vaghela

 
Ik weet over het verschuiven en kan ook te maken met behulp concatination & .. maar hoe kunnen we weten de variabelen als voorbeeld hebben we a en b, dus hoe weten we dat een behoefte 2 shift en zo ...Ik heb het algoritme voor het

 
hoi,

Voor vermenigvuldiging, zoals ik u verteld erlier gebruik opeenvolgende toevoeging.
bijv. 3x4 = 3 3 3 3 = 12

Likevise voor divisie die u kunt gebruiken opeenvolgende subtratction.

HTH
--
Shitansh Vaghela

 
Dit is niet een algemene oplossing maar eerder een zeer specifiek is.Misschien helpt:
"Recent heb ik gevraagd door een collega om een goede oplossing te vinden voor een kloof van 7 Verilog uitvoering ...."
http://bknpk.no-ip.biz/my_web/divide_by_constnat/divide_by_constant.html

 
i geprogrammeerde fllowing code is crrect maar krijgen verkeerd resultaat

de fllowing code is Shift vermenigvuldigen
please als iemand mij kan vertellen krijgen verkeerd resultaat?library IEEE;
gebruik IEEE.STD_LOGIC_1164.ALL;
gebruik IEEE.STD_LOGIC_ARITH.ALL;
gebruik IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment de volgende verklaring bibliotheek als instantiëren
---- Alle Xilinx primitieven in deze code.
- bibliotheek UNISIM;
- gebruik UNISIM.VComponents.all;

entiteit MUL is
Port :) CLK in STD_LOGIC;
- I: in integer: = 1;
resultaat: out STD_LOGIC_vector (15 Downto 0);
m: in STD_LOGIC_vector (7 Downto 0);
n: in STD_LOGIC_vector (7 Downto 0);
start: in std_logic);

einde MUL;

architectuur Behavioral van MUL is
signaal count: integer: = 0;
signaal N1, M1: std_logic_vector (7 Downto 0);
signaal result1: std_logic_vector (15 Downto 0);
beginnen
proces (CLK)

beginnen
m1 <= m;
n1 <= n;
- resultaat <= result1;

if (rising_edge (clk)) dan
if (start = '1 ') then
resultaat <= "0000000000000000";
count <= 0;
anders
if (count / = 8) dan
if (m1 (0) = '1 ') then
resultaat <= result1 n;
end if;
n1 <= n (6 Downto 0) & '0 ';
m1 <= '0 '& m (7 Downto 1);
count <= count 1;
end if;
end if;
end if;
einde proces

einde Behavioral;

 

Welcome to EDABoard.com

Sponsor

Back
Top