РОЗРОБЛЕННЯ VHDL-МОДЕЛІ КОМП'ЮТЕРА

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

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

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

Рік:
2004
Тип роботи:
Курсовий проект
Предмет:
Теорія і проектування комп’ютерних систем та мереж
Група:
КСМ

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

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА' Кафедра ЕОМ  Курсовий проект З дисципліни “Теорія і проектування комп’ютерних систем та мереж” НА ТЕМУ :”РОЗРОБЛЕННЯ VHDL-МОДЕЛІ КОМП'ЮТЕРА” АНОТАЦІЯ Дана курсова робота являє собою проектування спрощеної моделі мікрокомп(ютерної системи з усіма його основними складовими ,що забезпечують її нормальне функціонування. Проектування здійснювалось з допомогою засобів автоматизованого проектування AHDL фірми ALDEC. Ці засоби використовуються у зв(язку з неспроможністю інших методів (схемотехнічних) наприклад розробляти проекти для схем великої складності .З доломогою цих засобів можна легко формулювати і швидко модифікувати проекти, вчасно виявляти і легко модифікувати помилки . Весь інструментарій автоматизованого проектування AHDL дає можливість крім проектування, ще й синтезувати проекти з подальшою їх прошивкою. Саме через ці якості проектування є досить ефективне і надійне. Проектування деяких системи з допомогою засобів AHDL, на даному етапі розвитку систем автоматизованого проектування є досить раціональною і перспективною справою. ЗМІСТ ЗАВДАННЯ НА КУРСОВИЙ ПРОЕКТ .............................................................................. 4 ВСТУП ....................................................................................................................................................... 5 Структура мікрокомп(ютера ...................................................................... 6 Проектування інформаційного тракту ....................................................... 7 2.1 Проектування блока АЛП ...................................................................... 8 Проектування керуючого автомата ............................................................ 9 Симуляція роботи мікрокомп(ютера ......................................................... 13 Висновки ...................................................................................................... 14 ЛІТЕРАТУРА ............................................................................................................ 15 ДОДАТОК ..................................................................................................................16 ЗАВДАННЯ НА ПРОЕКТУВАННЯ У розроблену VHDL-модель комп’ютера розробленого в методичних вказівках внести такі зміни : Зовнішня пам(ять команд і даних об(ємом 128x8 Регістровий файл (RF) внести у внутрішню структуру Інформаційного тракту Спроектувати Індексний регістр (Index Register(7..0)) в Інформаційного тракті для доступу до зовнішньої пам(яті До системи команд мікропроцесора GNOME додати такі інструкції : Set_index (index_reg(3..0):=ACC) Shift_index (index_reg(6..4):= index_reg(2..0)) Load_Ram Store_Ram ВСТУП Мета курсового проекту полягає в опануванні методів проектування вузлів комп'ютерних систем на прикладі створення моделі однокристального комп'ютера з використанням мови апаратного опису VHDL, виконанні симуляції з наступним тестуванням роботи мікропроцесорної системи на функціональному рівні. Розроблюваний універсальний однокристальний мікрокомп'ютер є різновидом універсальних комп'ютерів. Він містить усі стандартні пристрої, необхідні для реалізації цифрової системи мінімальної конфігурації, а саме — процесор, пам'ять команд, пам'ять даних, внутрішній тактовий генератор. Основою мікрокомп'ютера, що проектується, є мікропроцесор Gnome — 4-розрядний гіпотетичний неконвеєрний RISC мікропроцесор, зі спрощеною системою команд та типів адресування. Основну увагу під час розробки мікропроцесора приділено проектуванню архітектури мікрокомп'ютера з використанням мови апаратного опису VHDL, оскільки при проектуванні НВІС (надвеликих інтегральних схем) з використанням рівнів архітектурного, логічного, топологічного проектування успіх розробки найбільшою мірою залежить від результатів попереднього, архітектурного рівня проектування. Вибраний спосіб побудови моделі пристрою за допомогою мови VHDL та інструментального засобу Active-VHDL фірми Aldec забезпечує можливість швидкої модифікації архітектури, є самоописовим, тобто він дозволяє швидко виявляти та усувати хиби проектування. Альтернативою опису моделі за допомогою мов апаратного опису є схемотехнічний синтез та синтез архітектури мікрокомп'ютера з використанням функцій алгебри логіки. Синтез архітектури мікрокомп'ютера з використанням функцій алгебри логіки вимагає від розробника опису схеми в термінах заданої множини логічних функцій. Такий підхід є ефективний при побудові пристроїв невеликої складності. Суто теоретично функціонування мікрокомп'ютера можна описати даним способом, але через велику складність він є неприйнятним. Метод схемотехнічного синтезу базується на синтезі з використанням як окремих логічних функцій, так і елементів, що побудовано на основі логічних функцій. Схемотехнічний дизайн є зручним і наочним для схем невеликої складності. Він дозволяє зручно втілювати евристичні схемотехнічні рішення. Проте цей метод є практично неприйнятним для схем великої складності (від 10 тисяч логічних елементів), оскільки складно формулюється, не дає змоги швидко модифікувати проект, вчасно виявляти та усувати хиби проектування. Незручність схемотехнічного проектування складних систем дала поштовх розробці низки мов проектування. Зокрема, на початку 80-х років Міністерство оборони США підтримало розробку мови VHDL (VHSIC hardware description language) в рамках програми VHSIC (very high-speed 1C). Цю ініціативу було підтримано Інститутом інженерів електриків та електронників (IEEE) з метою розробки стандарту мови — IEEE Standard 1076-1987. Згодом Міністерством Оборони США доповнило стандарт IEEE Standard 1076-1987 власним стандартом MIL-STD-454, який регламентував сам процес проектування НВІС із використанням мови VHDL. Інститутом IEEE запроваджено стандарт Std-1164 бібліотеки мови VHDL уведенням багаторівневої логіки, яка необхідна в моделюванні роботи інтегральної схеми, запроваджено стандарт Std-1029 регламентації способів верифікації та тестування проекту. В 1993 році запроваджено новий IEEE стандарт мови VHDL 1076-1993, що доповнив існуючий. Поширення набула абревіатура VHDL-87TaVHDL-93. Мова VHDL дозволяє охопити водночас декілька рівнів проектування — від архітектурного до логічного. Ця мова апаратного опису дає змогу описати пристрій як на поведінковому, так і на структурному рівнях та провести симуляцію. Тут синтез топології кристала виконують засобами автоматизованого синтезу на основі поведінкового та структурного описів пристрою. У складних проектах застосування мови VHDL та потужного засобу логічного синтезу дозволяє синтезувати пристрої, які за ефективністю перевищують аналогічні, з використанням схемотехнічного методу синтезу Структура мікрокомп'ютера Базова структура мікрокомп'ютера містить мікропроцесор Gnome та блок зовнішньої пам'яті (рис. 1). Наведена структура мікрокомп'ютера не є функціонально завершеною, оскільки відсутній інформаційний зв'язок поміж мікрокомп'ютером та зовнішнім оточенням. З погляду учбового функціонального проектування таке обмеження не є критичним. До того ж, запропоновану структуру мікропроцесора можна доповнити додатковими компонентами з метою розширення функціональних можливостей мікрокомп'ютера.  Рис.1. Структура мікрокомп'ютера Інформаційний тракт мікропроцесора Gnome Інформаційний тракт складається з таких компонентів: 1. Шестимирозрядний мультиплексор МІ Мультиплексор МІ формує фізичну адресу комірки пам'яті. Зовнішню пам'ять мікропроцесора Gnome поділено на пам'ять даних та пам'ять програм. Пам'ять даних складає 64х8-розрядні комірки пам(яті, а пам'ять програм—64 восьмирозрядних комірок . Фізично пам'ять програм та даних розміщено в зовнішній пам'яті мікропроцесора. Для пам'яті програм виділено адресний простір з фізичними адресами від 00h до 3fh (рис.1), для звертання до RAM виділено адресний простір від 40h до 7fh. При надходженні sel_data_ram= '1' мультиплексор формує фізичну адресу комірки пам'яті даних за логічною, яка зберігається в Індексному регістрі. При надходжнні sel_data_rат='0' мультиплексор формує фізичну адресу комірки пам'яті за логічною, що містить регістр лічильника інструкцій PC.. Пам(ять програм ROM 000 0000 011 1111  Пам(ять даних RAM 100 0000 111 1111   Рис.2. Розподіл адресного простору 2. Програмно-доступні регістри PC, Z, С, АСС,Index_Reg Шестирозрядний регістр PC призначено для зберігання вмісту лічильника команд. Регістри Z та С є однорозрядними регістрами-тригерами, які зберігають поточне значення регістра ознаки нульового значення та регістра ознаки переносу. АСС - чотирирозрядний регістр, який виконує роль акумулятора. Index_Reg – індексний регістр , що містить адресу читання/запису для інструкцій звертання до зовнішньої пам(яті. 3. Регістр інструкцій IR Призначено для зберігання коду прочитаної інструкції. Керуючі сигнали ld_ir та ld_ir_lsn дозволяють завантажувати в регістр IR як 8-розрядне слово інструкції (табл.2), так і 4-розрядне слово даних з Регістроого файлу. Таблиця 1 Ld_ir Ld_ir_lsn Дія  0 1 0 1 Збереження вмісту IR без змін  0 1 Завантаження в молодші розряди регістра інструкцій IR 4-розрядного слова з Регістрового файлу.  1 0 Завантаження в IR 8-розрядної інструкції з шини даних   4.Мультиплексор М3 Формує дані для IR, якщо керуючий сигнал Sel_data=0 тоді в регістр інструкцій поступають 8 розрядні дані з шини даних від зовнішньої пам(яті, інакше 4 розрядні дані з регістрового файлу. 5. Шестирозрядний мультиплексор М2 та суматор SM Призначено для формування логічної адреси наступної інструкції на основі керуючих сигналів jump_рс та inс_рс (таб.З). Якщо іпс_рс= '1', на виході суматора є збільшений на одиницю вміст лічильника інструкцій PC, а якщо іпс_рс= '0', — поточне. Сигнал jump_рс керує формуванням наступної адреси з молодших розрядів регістра інструкцій PC (jump_pc= '1') або з виходу суматора SM(jump_pc='0'). Таблиця 2 jump pc іnс рс Адреса наступної інструкції  0 0 Залишається незмінною, тобто дорівнює PC.  0 1 Дорівнює РС+1.  1 1 0 1 Дорівнює молодшим розрядам регістра інструкцій IR.   Арифметико-логічний пристрій АЛП є комбінаційним пристроєм, який виконує певні операції над вхідними операндами. Для випадку розглядуваного мікропроцесора Gnome першим вхідним операндом АЛП (рис.8) є поточна інформація з акумулятора сиr_асс, другим операндом є молодші 4 біти регістра команд сиr_іr, а також поточні значення ознак переносу curr_carry та нуля curr_zero. На виході блок АЛП залежно від коду операції alu_op формує результат: наступне значення акумулятора next_acc, отримане значення ознаки переносу next_carry, отримане значення ознаки нуля next_zero. Блок АЛП виконує невелику кількість операцій над 4-розрядними операндами (табл.4), що зумовлено простою системою команд мікропроцесора.  Рис. 3. Структурна схема АЛП Таблиця 3  Допоміжні елементи В інформаційному тракті мікропроцесора Gnome присутні повторювачі, інвертори та інші логічні елементи, які забезпечують формування керуючих сигналів та інформації на шині даних. Керуючий автомат Проектування керуючого автомата є складним та багатогранним етапом проектування, оскільки вимагає від розробника розуміння особливостей функціонування пристрою, вміння вибрати та ефективно спроектувати абстрактний автомат. Керуючий автомат — один з найважливіших блоків мікропроцесора. Спільно з генератором тактових імпульсів, який формує сигнал синхронізації clock, керуючий автомат забезпечує проходження подій в мікропроцесорі в правильній послідовності, тобто декодування інструкції та генерацію відповідних керуючих сигналів для реалізації елементарних операцій інформаційним трактом в циклах IF, ID, EX, встановлення в початковий стан вузлів мікропроцесора при надходженні сигналу встановлення в початковий стан reset. Множину керуючих сигналів складають сигнали sel_data_ram, read, write, ld_ir, ld_ir_lsn, inc_pc, jump_pc, alu_op, W_R, sel_data, shift_index, set_index. Розглянемо детально, які значення керуючих сигналів формуються пристроєм керування на кожному циклі виконання інструкції. 1. Цикл вибирання інструкцій (Instruction Fetch cycle -IF) Завантаження з пам'яті інструкцій, інкремент значення лічильника команд PC на одиницю: sel_data_ram=0 read=l write=0 ld_ir=l ld_ir_lsn=0 inc_pc=l jump_pc=0 alu_op=000 (NOP) W_R=0 sel_data=0 shift_index=0 set_index=0 перехід до циклу ID 2. Цикл декодування інструкції/вибирання операнда з регістрового файлу (Instruction decode/register fetch cycle - ID) Для інструкцій LOAD_DIR, ADD_DIR, XOR_DIR, TEST_DIR, операндом яких є значення РЗП RO-R15, виконується читання та запис в молодші 4 розряди регістра IR значення з регістрового файлу: sel_data_ram=0 sel_data=1 W_R=0 shift_index=0 set_index=0 read=0 write=0 ld_ir=0 ld_ir_lsn=l inc_pc=l jump_pc=0 alu_op=000 (NOP) перехід до циклу ЕХ Для інструкції Load_Ram READ <= '1'; LD_IR <= '1'; SEL_DATA_RAM <= '1'; Решта нулі перехід до циклу ЕХ Для решти інструкцій, які не вимагають завантаження усі керуючі сигнали присвоюються нулю перехід до циклу ЕХ З. Цикл виконання (Execute cycle - EX) У даному циклі керуючі сигнали залежать від інструкції, це зумовлено відмінністю в множині мікрооперацій, виконуваних інформаційним трактом, для конкретної інструкції. Інструкції виконуються формуванням сигналів alu_op, inc_pc,jump_pc, sel_data_ram, write, W_R, shift_index, set_index, read. . Розглянемо типові приклади формування керуючих сигналів для інструкції групи: • ADD_DIR (група арифметико-логічних операцій): alu_op=010 (ADD_OP) перехід до циклу IF • STORE_DIR (група операцій збереження результату): write=l перехід до циклу IF • JUMP (група операцій умовних та безумовних переходів): jump_pc=l перехід до циклу IF STORE_RAM(група операцій збереження результату): SEL_DATA_RAM <= '1'; WRITE <= '1'; перехід до циклу IF SHIFT_IND(група операцій збереження результату): shift_index <= '1'; перехід до циклу IF SET_IND(група операцій збереження результату): set_index <= '1'; перехід до циклу IF LOAD_RAM(група операцій збереження результату): ALU_OP <= PASS_OP; перехід до циклу IF  Рис.4. Структурна схема мікропроцесора GNOME Симуляція роботи мікрокомп(ютера:  Висновки Виконавши даний курсовий проект я опанував методи проектування вузлів комп(ютерних систем на прикладі створення моделі однокристального комп(ютера з використанням мови апаратного опису VHDL та інструментального засобу Active-VHDL фірми ALDEC, вніс зміни у внутрішню структру і додав декілька інструкцій згідно з поставленою задачею, виконав симуляйії з наступним тестуванням роботи мікропроцесорної системи на функціональному рівні. ЛІТЕРАТУРА 1 .Методичні вказівки до циклу лабораторних робіт з курсу "Теорія і проектування комп'ютерних систем та мереж" для підготовки спеціалістів та магістрів на базі напрямку "Комп'ютерна інженерія" / Укл. Дунець Б.Р., Мельник А.О., Троценко В.В. - Львів: Видавництво ДУ "Львівська політехніка", 1999.-25с. Методичні вказівки до дипломного проектування для студентів спеціальності 22.01 "Обчислювальні машини, системи, комплекси та мережі". - Львів, ЛШ, 1993. Michael John Sebastian Smith Addison-Wesley Publishing Company VLSI Design Series 1,040 pages ISBN: 0-201-50022-1 June 1997 J.H. Henness, D.A.Patterson: Computer Architecture A Quantitative Approach, Morgan Kaufman Publishers, 1990 P.J. Ashenden: The VHDL Cookbook, First Edition, University of Adelaide, Australia, 1990 Інтернет сайт фірми Aldec Inc. http://www.aldec.com/ ДОДАТОК Gen_Defs.vhd (Фрагмент) Design : roma library IEEE; use IEEE.STD_LOGIC_1164.all; package Gen_Defs is -- Asynchronous level-sensetive memory type type memory is array (0 to 128) of std_logic_vector(7 downto 0); Опис констант, що відповідають кодам інструкцій мікропроцесора GNOME MCU Instruction Set constant CLEAR_C : std_logic_vector(7 downto 0) := "00000000"; . . constant Store_Ram : std_logic_vector(7 downto 0) := "00001000"; constant Load_Ram : std_logic_vector(7 downto 0) := "00001001"; constant set_ind : std_logic_vector(7 downto 0) := "00001010"; constant shift_ind : std_logic_vector(7 downto 0) := "00001011"; constant JUMP : std_logic := '1'; Опис констант, що відповідають кодам операцій АЛП -- ALU Operation Codes constant NOP_OP : std_logic_vector(2 downto 0) := "000"; -- translate A constant PASS_OP : std_logic_vector(2 downto 0) := "001"; -- translate B constant ADD_OP : std_logic_vector(2 downto 0) := "010"; -- OUT = A + B + Ci; form C constant XOR_OP : std_logic_vector(2 downto 0) := "011"; -- OUT = A ^ B constant AND_OP : std_logic_vector(2 downto 0) := "100"; -- OUT = A & B; form Z constant SET_CARRY_OP: std_logic_vector(2 downto 0) := "101"; -- C = 1 constant CLR_CARRY_OP: std_logic_vector(2 downto 0) := "110"; -- C = 0 end Gen_Defs; meory.vhd(Фрагмент) --Опис бібліотек і вхідних, вихідних портів architecture meory of meory is begin Read_Write: process (ADDRESS, nCSB, nOEB, nWEB) variable mem_array: Memory := (others => "00000000"); variable sel : std_logic_vector(1 downto 0); variable index : integer range 0 to 128; begin --Ініціалізація пам(яті програм -- Memory behavior description index := CONV_INTEGER(ADDRESS); if nCSB = '1' then DATA <= "ZZZZZZZZ"; else sel := nWEB & nOEB; case sel is when "10" => DATA <= mem_array(index); -- memory read when "01" => mem_array(index) := DATA; -- memory write when others => DATA <= "ZZZZZZZZ"; end case; end if; end process; end meory; Reg_File.vhd(Фрагмент) --Опис бібліотек і вхідних, вихідних портів architecture Reg_File of Reg_File is Type MEM is array (0 to 15) of STD_LOGIC_VECTOR(3 downto 0); begin --функція запису у регістровий файл process(clock) variable RamTmp : MEM; begin RamTmp(0) := "1110"; RamTmp(1) := "1111"; RamTmp(2) := "1101"; IF (clock'EVENT AND clock='1') Then IF(WE = '1') Then RamTmp(conv_integer (Address)) := In_Data; end if; end if; Out_Data <= RamTmp(conv_integer (Address)); end process; end Reg_File; ALU.vhd (Фрагмент) --Опис бібліотек і вхідних, вихідних портів -- Декларація використаних в проекті бібліотек включно з власною Gen_Defs ENTITY ALU IS PORT( curr_acc :IN std_logic_vector(3 DOWNTO 0); . . . next_zero :OUT std_logic); END ALU; ARCHITECTURE behavioral OF ALU IS BEGIN PROCESS (curr_acc, curr_ir, curr_carry, curr_zero, alu_op) -- Змінна sum необхідна для додавання двох чисел VARIABLE sum : std_logic_vector (4 DOWNTO 0); BEGIN CASE alu_op IS WHEN NOP_OP => next_acc <= curr_acc; next_carry <= curr_carry; next_zero <= curr_zero; WHEN ADD_OP => -- Розширення розрядної сітки вхідних чисел та додавання sum := (e0i& curr_acc)+(e0i & curr_ir)+(i0000i & curr_carry); next_acc <= sum (3 DOWNTO 0); next_carry <= sum (4); next_zero <= curr_zero; WHEN PASS_OP => next_acc <= curr_ir; next_carry <= curr_carry; next_zero <= curr_zero; -- Формування ознаки нуля за допомогою логічного виразу next_zero <= NOT((curr_acc(3) AND curr_ir(3)) OR (curr_acc(2) AND curr_ir(2)) OR (curr_acc(1) AND curr_ir(1)) OR (curr_acc(0) AND curr_ir(0))); WHEN OTHERS => next_acc <= curr_acc; next_carry <= curr_carry; next_zero <= curr_zero; END CASE; END PROCESS; END behavioral; -- File : Datapath(Фрагмент) -- Design : roma --Опис бібліотек і вхідних, вихідних портів architecture Behavior of Datapath is component Reg_File is port ( --Опис вхідних, вихідних портів ); end component Reg_File; component ALU is port( --Опис вхідних, вихідних портів ); end component ALU; --декларація допоміжних сигналів begin -- Memory Control Signals nCSB <= '0'; nOEB <= not READ; nWEB <= WRITE nand (not CLK); -- Address Bus (Multiplexer M1) ADDRESS <= PC when SEL_DATA_RAM = '0' else Reg; -- Organization Index Register Next_Reg (3 downto 0) <= ACC when set_index = '1'; Next_Reg (6 downto 4) <= Next_Reg (2 downto 0) when shift_index = '1'; -- Data to PC (Multiplexer M2 and SM) NEXT_PC <= IR(6 downto 0) when JUMP_PC = '1' else PC + 1 when INC_PC = '1' else PC; -- Data from ACC DATA <= ("0000" & ACC) when WRITE = '1'and Reg(6)='0' else "ZZZZZZZZ"; -- Data bus to IR NEXT_IR <= DATA when LD_IR = '1' and sel_data = '0' else (IR(7 downto 4) & Out_Data) when LD_IR_LSN = '1' and sel_data = '1' else IR; -- State signals to Control Unit Z_ST <= Z; C_ST <= C; IR_DATA <= IR; -- Datapath registers implementation Registers: process (CLK, RESET) begin if RESET = '1' then -- asynchronous reset PC <= "0000000"; Reg <= "0000000"; IR <= "00000000"; ACC <= "0000"; Z <= '0'; C <= '0'; elsif CLK'Event and CLK = '1' then PC <= NEXT_PC; IR <= NEXT_IR; ACC <= NEXT_ACC; Reg <= Next_Reg; Z <= NEXT_Z; C <= NEXT_C; end if; end process; U0: component Reg_File port map( In_Data => ACC, clock => CLK, WE => W_R, Address => IR (3 downto 0), Out_Data => Out_Data ); -- ALU connections U1: component ALU port map( CURR_ACC => ACC, . . NEXT_ZERO => NEXT_Z ); end Behavior; -- File : ControlUnit(Фрагмент) -- Design : roma library IEEE; use IEEE.STD_LOGIC_1164.all; use WORK.GEN_DEFS.all; entity ControlUnit is port(--Опис вхідних, вихідних портів ); end ControlUnit; architecture Behavior of ControlUnit is --Декларація типу необхідного для реалізація регістра станів автомата type MachineStates is (I_F, I_D, E_X); signal STATE, NEXT_STATE: MachineStates; begin -- Control Unit is implemented as Mealy FSM StateRegister: process (CLK) begin if CLK'Event and CLK = '1' then if RESET = '1' then STATE <= I_F; else STATE <= NEXT_STATE; end if; end if; end process; Transition_and_Output_Function: process (CLK) begin -- встановлення початкових значень для коректної реалізації станів SEL_DATA_RAM <= '0'; READ <= '0'; WRITE <= '0'; W_R<= '0'; JUMP_PC <= '0'; INC_PC <= '0'; LD_IR <= '0'; LD_IR_LSN <= '0'; ALU_OP <= "000"; sel_data <= '0'; set_index <= '0'; shift_index <= '0'; case STATE is when I_F => READ <= '1'; INC_PC <= '1'; LD_IR <= '1'; NEXT_STATE <= I_D; when I_D => if IR_DATA(7 downto 4) = ADD_DIR or IR_DATA(7 downto 4) = XOR_DIR or IR_DATA(7 downto 4) = LOAD_DIR or IR_DATA(7 downto 4) = TEST_DIR then sel_data <= '1'; LD_IR_LSN <= '1'; elsif IR_DATA(7 downto 0) =Load_Ram then READ <= '1'; LD_IR <= '1'; SEL_DATA_RAM <= '1'; else READ <= '0'; end if; NEXT_STATE <= E_X; when E_X => if IR_DATA = CLEAR_C then . . if IR_DATA(7 downto 4) = STORE_DIR then W_R <= '1'; end if; if IR_DATA(7 downto 4) = XOR_DIR then ALU_OP <= XOR_OP; end if; if IR_DATA(7 downto 4) = TEST_DIR then ALU_OP <= AND_OP; end if; if IR_DATA(7 downto 0) = set_ind then set_index <= '1'; end if; if IR_DATA(7 downto 0) = shift_ind then shift_index <= '1'; end if; if IR_DATA(7 downto 0) = Store_Ram then SEL_DATA_RAM <= '1'; WRITE <= '1'; end if; if IR_DATA(7 downto 0) = Load_Ram then ALU_OP <= PASS_OP; end if; if IR_DATA(7) = JUMP then JUMP_PC <= '1'; end if; NEXT_STATE <= I_F; end case; end process; end Behavior; -- File : GnomeMCU(Фрагмент) -- Design : roma library IEEE; use IEEE.STD_LOGIC_1164.all; entity GnomeMCU is port( CLOCK: in std_logic; RESET: in std_logic; -- Memory interface ADDRESS: out std_logic_vector(6 downto 0); DATA : inout std_logic_vector(7 downto 0); nCSB : out std_logic; nWEB : out std_logic; nOEB : out std_logic ); end GnomeMCU; architecture Structure of GnomeMCU is component ControlUnit is port( --Опис вхідних, вихідних портів ); end component ControlUnit; component Datapath is port( -- Control Unit Interface --Опис вхідних, вихідних портів -- External Memory Interface --Опис вхідних, вихідних портів ); end component Datapath; signal IR_DATA_BUS: std_logic_vector(7 downto 0); signal Z_ST_NET, C_ST_NET, SEL_DATA_RAM_NET, WRITE_NET, set_index_NET, READ_NET, JUMP_PC_NET, INC_PC_NET,sel_data_NET, shift_index_NET, LD_IR_NET, LD_IR_LSN_NET,W_R_NET: std_logic; signal ALU_OP_BUS : std_logic_vector(2 downto 0); begin U0: component Datapath port map(
Антиботан аватар за замовчуванням

08.02.2013 15:02-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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