DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Звіт по Курсовій роботі з дисципліни: “Комп’ютерна схемотехніка: “ Спеціалізований обчислювач”

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2014
Тип роботи:
Курсова робота
Предмет:
Комп’ютерна схемотехніка

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки,молоді та спорту України Національний університет „Львівська політехніка” Кафедра ЕОМ / Звіт по Курсовій роботі з дисципліни: “Комп’ютерна схемотехніка: “ Спеціалізований обчислювач” З А В Д А Н Н Я Розробити спеціалізований обчислювач, що має відповідати наступним вимогам : структурна схема обчислювача : мікропрограмний автомат Мілі; робоча формула : Yi = ( Xi * N) mod 216, де 9 ≤ i ≤ 15 ( значення N та i задаються керівником курсового проекта ); формат даних : 16 бітний беззнаковий двійковий код з фіксованою комою ( тобто коди від (0).0000 0000 0000 0000 до (0).1111 1111 1111 1111 ); інформаційний обмін здійснюється через паралельну 16-ти розрядну двонаправлену шину даних за допомогою додаткових сигналів синхронізації ( рівні сигналів сумісні з ТТЛ ); керуючий автомат реалізувати на основі ПЗП та регістра; напруга живлення та тактові імпульси надходять від зовнішнього джерела, а сигнал початкового скидання формується локально. Задана константа : 9B2B16=1001 1011 0010 10112 Розробка та моделювання спеціалізованого обчислювача / Результати моделювання:  VHDL – коди елементів: Buf.vhd library IEEE; use IEEE.STD_LOGIC_1164.all; entity Buf is port( Dir : in STD_LOGIC; OE : in STD_LOGIC; A : inout STD_LOGIC_VECTOR(7 downto 0); B : inout STD_LOGIC_VECTOR(7 downto 0) ); end Buf; --}} End of automatically maintained section architecture Buf of Buf is begin A<=B when (OE = '0' and Dir = '0') else (others =>'Z'); B<=A when (OE = '0' and Dir = '1') else(others =>'Z'); end Buf; RAM.vhd library IEEE; use IEEE.STD_LOGIC_1164.all; entity ram is port( CE : in STD_LOGIC; WE : in STD_LOGIC; OE : in STD_LOGIC; AD : in STD_LOGIC_VECTOR(10 downto 0); D : inout STD_LOGIC_VECTOR(7 downto 0) ); end ram; architecture ram of ram is type MEM is array(0 to 2047) of std_logic_vector (7 downto 0); begin PROCESS(AD, CE, OE, WE, D) TYPE ram_array IS ARRAY (0 TO 2047) OF BIT_VECTOR(7 DOWNTO 0); VARIABLE index : INTEGER := 0; VARIABLE ram_store : ram_array; BEGIN IF CE = '0' THEN index := 0; FOR i IN AD'RANGE LOOP IF AD(i) = '1' THEN index := index + 2**i; END IF; END LOOP; IF rising_edge(WE) THEN ram_store(index) := To_bitvector(D); ELSIF OE = '0' THEN D <= To_StdlogicVector(ram_store(index)); ELSE D <= "ZZZZZZZZ"; END IF; ELSE D <= "ZZZZZZZZ"; END IF; END PROCESS; end ram; Reg.vhd library IEEE; use IEEE.STD_LOGIC_1164.all; entity RG is port( CLK : in STD_LOGIC; CLR : in STD_LOGIC; DSR : in STD_LOGIC; DSL : in STD_LOGIC; S0 : in STD_LOGIC; S1 : in STD_LOGIC; D : in STD_LOGIC_VECTOR(7 downto 0); Q : out STD_LOGIC_VECTOR(7 downto 0) ); end RG; --}} End of automatically maintained section architecture RG of RG is SIGNAL INT_DAT : std_logic_vector (7 downto 0); SIGNAL S1_S0 : std_logic_vector (1 downto 0); begin Q<=INT_DAT; S1_S0 <= S1&S0; process (CLK, CLR) begin if CLR ='0' then INT_DAT<=(others =>'0') ; elsif rising_edge(CLK) then case S1_S0 is when "01" => INT_DAT <= INT_DAT (6 downto 0) & DSR; when "10" => INT_DAT <= DSL & INT_DAT(7 downto 1); when "11" => INT_DAT <= D; when others => end case; end if; end process ; end RG; Sum.vhd library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.all; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Sum is port( C0 : in STD_LOGIC; A : in STD_LOGIC_VECTOR(3 downto 0); B : in STD_LOGIC_VECTOR(3 downto 0); C4 : out STD_LOGIC; P : out STD_LOGIC_VECTOR(3 downto 0) ); end Sum; --}} End of automatically maintained section architecture Sum_arc of Sum is signal tmp: std_logic_vector(4 downto 0); begin tmp <= conv_std_logic_vector((conv_integer(A) + conv_integer(B) + conv_integer(C0)), 5); P <= tmp(3 downto 0); C4 <= tmp(4); end Sum_arc; Counter.vhd library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity counter is port( L : in STD_LOGIC; -- вхід попереднього запису R : in STD_LOGIC; -- скид тригерів в "0" pr : in STD_LOGIC; -- вхід "прямий рахунок" zr : in STD_LOGIC; -- вхід "зворотній рахунок" D : in STD_LOGIC_VECTOR(0 to 3); -- інформаційні входи Q : out STD_LOGIC_VECTOR(0 to 3); -- інформаційні виходи pp : out STD_LOGIC; -- вихід "прямий перенос" zp : out STD_LOGIC-- вихід "зворотній перенос" ); end counter; architecture counter of counter is signal CNT_VAL: std_logic_vector(3 downto 0); begin Q<=CNT_VAL; process(L,R,pr,zr) begin pp<='0'; zp<='0'; if pr'event and pr='0' then if R='1' then CNT_VAL<=(others=>'0'); else if L='0' then CNT_VAL<=D; else if L='1' then CNT_VAL<=CNT_VAL+1; if CNT_VAL="1111" then pp<='1'; end if; end if; end if; end if; end if; if zr'event and zr='0' then if R='1' then CNT_VAL<=(others=>'0'); else if L='0' then CNT_VAL<=D; else if L='1' then CNT_VAL<=CNT_VAL-1; if CNT_VAL="0000" then zp<='1'; end if; end if; end if; end if; end if; end process; end counter; VHDL-код прошивки автомата library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.all; entity Avt is port( Clk : in STD_LOGIC; Res : in STD_LOGIC; load : in STD_LOGIC; We_RE : in STD_LOGIC; S : in STD_LOGIC_VECTOR(7 downto 0); O : out STD_LOGIC_VECTOR(23 downto 0); Mk : out STD_LOGIC_VECTOR(15 downto 0) ); end Avt; architecture Avt of Avt is signal st:integer;--ñòàíè àâòîìàòà signal bb :std_logic_vector(23 downto 0); begin process(CLK,Res) begin if Res = '1' then bb <= X"00473D"; --;Mmk<="1001 1011 0010 1011"; elsif (CLK ='1' and CLK'event) then st<= CONV_INTEGER(S); case st is when 0 => bb <= X"01C733"; when 1 => bb <= X"02E613"; when 2 => bb <= X"03E213"; when 3 => bb <= X"04E613"; when 4=> bb <= X"05E715"; when 5=> bb <= X"06E717"; when 6=> bb <= X"07E617"; when 7=> bb <= X"08E417"; when 8=> bb <= X"09F617"; when 9=> bb <= X"0AE717"; when 10=> bb <= X"0BE715"; when 11=> bb <= X"0C3716"; when 12=> bb <= X"0D3616"; when 13=> bb <= X"0E3416"; when 14=> bb <= X"0F3616"; when 15=> bb <= X"103715"; when 16=> bb <= X"113715"; when 17=> bb <= X"12E717"; when 18=> bb <= X"13E617"; when 19=> bb <= X"14E417"; when 20=> bb <= X"15F617"; when 21=> bb <= X"16E715"; when 22=> bb <= X"17A719"; when 23=> bb <= X"183715"; when 24=> bb <= X"193716"; when 25=> bb <= X"1A3616"; when 26=> bb <= X"1B3416"; when 27=> bb <= X"1C3616"; when 28=> bb <= X"1D3715"; when 29=> bb <= X"1E3715"; when 30=> bb <= X"1FE717"; when 31=> bb <= X"20E617"; when 32=> bb <= X"21E417"; when 33=> bb <= X"22F617"; when 34=> bb <= X"23E715"; when 35=> bb <= X"24A719"; when 36=> bb <= X"253715"; when 37=> bb <= X"263716"; when 38=> bb <= X"273616"; when 39=> bb <= X"283416"; when 40=> bb <= X"293616"; when 41=> bb <= X"2A3715"; when 42=> bb <= X"2B3715"; when 43=> bb <= X"2CE717"; when 44=> bb <= X"2DE617"; when 45=> bb <= X"2EE417"; when 46=> bb <= X"2FF617"; when 47=> bb <= X"30E715"; when 48=> bb <= X"31A719"; when 49=> bb <= X"323715"; when 50=> bb <= X"33A719"; when 51=> bb <= X"343715"; when 52=> bb <= X"353716"; when 53=> bb <= X"363616"; when 54=> bb <= X"373416"; when 55=> bb <= X"383616"; when 56=> bb <= X"393715"; when 57=> bb <= X"3A3715"; when 58=> bb <= X"3BE717"; when 59=> bb <= X"3CE617"; when 60=> bb <= X"3DE417"; when 61=> bb <= X"3EF617"; when 62=> bb <= X"3FE715"; when 63=> bb <= X"403716"; when 64=> bb <= X"413616"; when 65=> bb <= X"423416"; when 66=> bb <= X"433616"; when 67=> bb <= X"443715"; when 68=> bb <= X"453715"; when 69=> bb <= X"46E717"; when 70=> bb <= X"47E617"; when 71=> bb <= X"48E417"; when 72=> bb <= X"49F617"; when 73=> bb <= X"4AE715"; when 74=> bb <= X"4BA719"; when 75=> bb <= X"4C3715"; when 76=> bb <= X"4D3716"; when 77=> bb <= X"4E3616"; when 78=> bb <= X"4F3416"; when 79=> bb <= X"503616"; when 80=> bb <= X"513715"; when 81=> bb <= X"523715"; when 82=> bb <= X"53E717"; when 83=> bb <= X"54E617"; when 84=> bb <= X"55E417"; when 85=> bb <= X"56F617"; when 86=> bb <= X"57E715"; when 87=> bb <= X"583716"; when 88=> bb <= X"593616"; when 89=> bb <= X"5A3416"; when 90=> bb <= X"5B3616"; when 91=> bb <= X"5C3715"; when 92=> bb <= X"5D3715"; when 93=> bb <= X"5EE717"; when 94=> bb <= X"5FE617"; when 95=> bb <= X"60E417"; when 96=> bb <= X"61F617"; when 97=> bb <= X"62E715"; when 98=> bb <= X"63A719"; when 99=> bb <= X"643715"; when 100=> bb <= X"65A719"; when 101=> bb <= X"663715"; when 102=> bb <= X"673716"; when 103=> bb <= X"683616"; when 104=> bb <= X"693416"; when 105=> bb <= X"6A3616"; when 106=> bb <= X"6B3715"; when 107=> bb <= X"6C3715"; when 108=> bb <= X"6DE717"; when 109=> bb <= X"6EE617"; when 110=> bb <= X"6FE417"; when 111=> bb <= X"70F617"; when 112=> bb <= X"71E715"; when 113=> bb <= X"72E717"; when others => bb <= X"000000"; END CASE; end if; O<=bb; END PROCESS; end Avt;
Антиботан аватар за замовчуванням

04.06.2014 22:17

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!