Розробка VHDL моделі комп’ютера (архітектура MIPS)

Розробка тестової програми. Структура одноциклового SPIM RISC комп’ютера. Верифікація VHDL моделі комп’ютера. Топ-файл VHDL моделі комп’ютера. Модулі керування, виконання операцій, декодування інструкцій, IF та пам’яті. Автоматично згенерований файл.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 30.01.2014
Размер файла 637,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Курсова робота

з дисципліни "Проектування комп'ютерних систем та мереж"

на тему: "Розробка VHDL моделі комп'ютера (архітектура MIPS)"

Зміст

Вступ

1.Опис RISC архітектури комп'ютерів

1.1 Розробка тестової програми

1.2 Синтез структури одноциклового SPIM RISC комп'ютера

1.3 Верифікація VHDL моделі комп'ютера

2.VHDL модель прототипу RISC комп'ютера

2.1 Топ-файл VHDL моделі комп'ютера

2.2 Модуль керування (CTL)

2.3 Модуль виконання операцій (ЕХЕ)

2.4 Mодуль декодування інструкцій (ID)

2.5 Mодуль IF

2.6 Модуль пам'яті (МЕМ)

2.7 Автоматично згенерований файл (Test Bench)

Висновки

Список використаної літератури

Вступ

Одним з перспективних напрямків проектування цифрових пристроїв є їх синтез на основі поведінкового опису виконаний розробниками на мові програмування класу HDL.

Основними складовими частинами процесу проектування є:

1. Етап передпроектних досліджень - вивчення потреб науково-технічних досягнень наявних ресурсів.

2. Технічне завдання включає:

· призначення системи;

· умови експлуатації виражені якісними або часовими характеристиками;

· вимоги до вихідних параметрів, виражені у вигляді умов працездатності.

3. Технічна пропозиція - визначає основні принципи побудови системи, можливість і доцільність проектування.

4. Ескізний проект - перевірка коректності основних принципів і положень, що визначають функціональність майбутнього об'єкта.

5. Технологічний проект - передбачає всебічну розробку частин проекту, конкретних технологічних рішень.

6. Робочий проект - формування всієї необхідної документації для виготовлення системи, створення і випробування дослідного зразка або пробної партії.

7. Випробування і ввід в експлуатацію - за результатами випробування в проектну документацію вносять зміни після чого здійснюється впровадження у виробництво.

програма одноцикловий верифікація модуль

1. Опис RISC архітектури комп'ютерів

RISC (англ. Reduced Instruction Set Computing ? комп'ютер зі скороченим набором команд) ? архітектура процесорів зі скороченим набором команд. Ще відома як «Load/Store» архітектура. Найвідоміші представники: DEC Alpha, ARC, ARM, AVR, MIPS, PA-RISC, Power Architecture (включаючи PowerPC), SuperH, та SPARC.

Основними рисами RISC архітектури є:

· мала кількість інструкцій;

· однакова довжина всіх інструкцій;

· мала кількість різних форматів інструкцій;

· відсутність інструкцій які працюють з операндами в пам'яті (за виключенням інструкцій завантаження та збереження);

· мала кількість апаратно підтримуваних типів даних;

· велика кількість ідентичних регістрів загального призначення.

Поштовхом для розробки RISC архітектури стало те, що тогочасні (середина 1970-х) компілятори не використовували більшість команд із CISC набору та не могли скористатися перевагами багатьох типів складної адресації. Виконання складних CISC інструкцій вимагало багатьох процесорних тактів, а реалізація різних типів адресування та інструкцій, що реалізовують високорівневі операції, займала більшість площі процесорного кристалу та майже не використовувалась.

RISC-процесори швидші і економічніші CISC. У принципі, є можливість проектувати процесори на чистій RISC-архітектурі. Але відмовитися від архітектури x86 вже неможливо, оскільки під неї написано більшість поширених у світі програм, включаючи комп'ютерні ігри.

1.1 Розробка тестової програми

В таблиці 1 подаємо варіант тестової програми. Дана тестова програма потрібна для верифікації результатів імплементації VHDL моделі до певної ПЛІС.

Приклад тестової програми:lab1:

lw $a0,0($zero)

lw $a1,1($zero)

аdd $a0, $a0, $a1

sw $a0, 0($zero)

beq $a0, $zero, lab1

lab2:

beq $a0, $a0, lab2

or $a0, $a0, $a0

or $a0, $a0, $a0

Таблиця 1

Адреса

Директива

Мітка

Інструкція

Код

.text

start:

00

lw $a0,0($zero)

0x8c040000

04

lw $a1,1($zero)

0x8c050001

08

add $a0, $a0, $a1

0x00852020

0c

sw $a0, 0($zero)

0xac040000

10

beq $a0, $zero, lab1

0x1080fffb

label:

14

beq $a0, $a0, lab2

0x1084ffff

Інструкція beq $a0, $a0, lab2 виключає подальші зміни програмного лічильника (pc). Тобто остання інструкція зупиняє програму.

Коли комірка пам'яті з абсолютною адресою 0 містить код числа +2, а комірка 1 - код числа (-2), тоді можна прорахувати наступну послідовність змін вмістимого програмного лічильника при виконанні тестової програми:

00, 04, 08, 0c, 10, 00, 04, 08, 0c, 10, 14, 14, 14, 14...

Таку послідовність змін вмістимого лічильника інструкцій ми повинні отримати часовою симуляцією імплементованої до ПЛІС VHDL моделі комп'ютера.

Для отримання машинних кодів тестової програми необхідна завантажити її до програмного симулятора машинних інструкцій Pcspim. Ці машинні коди мусить містити VHDL модель комп'ютера, яку ми розробляємо.

Рис.1 Вікно програмного симулятора з завантаженою тестовою програмою

Симулювання тестової програми не можна виконати через те, що реалізована в прототипі комп'ютера архітектура в деякій мірі відрізняється від оригінальної архітектури SPIM. Отже, повноцінно скористатися стандартним симулятором RISC MIPS архітектури для налагодження тестової програми можливо лише за умови, коли в проекті використані інструкції і структурні одиниці даних, які відповідають оригіналам.

Для того щоб симулятор подав правильно машинні коди, ще до завантаження в нього тестової програми необхідно його сконфігурувати в режимі bare (чиста апаратура, без програмної підтримки; вікно Settings меню Simulator) повинно набути наступного вигляду:

Рис.2 Конфігурування програмного симулятора Pcspim.

1.2 Синтез структури одноциклового SPIM RISC комп'ютера

Загалом, синтезована структура прототипу наближена до відомої структури SPIM машини. Але в оригінальну архітектуру SPIM машини навмисно внесені зміни для того щоб спростити імплементування в ПЛІС Spartan взірця 1998 року, а саме:

· формат даних має довжинує 8 бітів, а не 32 біти;

· формат інструкцій не змінено, а ось його трактування для інструкцій з безпосереднім операндом змінено проти оригіналу; це дозволило викорстовувати наявні асемблери і симулятори;

· реалізовано не всі інструкції, а лише ті, що містить тестова програма;

· пам'ять даних містить дві байтові комірки з адресами 0 і 1 ( а не 0 та 4, як має бути); двох комірок достатньо, аби виконувати тестову програму прототипу;

· регістри даних мають розрядність 8 бітів, а не 32 біти; їх є лише вісім, а не 32, як в оригіналі.

Сучасні ПЛІС фірми Xilinx дозволяють створювати моделі для синтезу в ПЛІС з оригінальною розрядністю даних, з оригінальним числом 32 регістрів загального призначення та з місткістю пам'яті програми і пам'яті даних на декілька кілобайтів кожна. Отже, спрощення (викривлення) MIPS архітектури, допущені в прототипі, що розглядається у реальному проектуванні нескладно виправити. Дані спрощення допустились для того щоб досягнути варіативності вихідних даних на розробку проекту.

Рис.3 Спрощене подання синтезованої структури одноциклової SPIM машини

Далі представимо детальну структуру одно циклової RISC машини Паттерсона і Хеннессі.

Рис.4 Детальна структура одноциклової RISC машини Паттерсона і Хеннессі

Пригортаємо увагу до того, що метою проектування є одноцикловий варіант, тобто такий, у якому нема конвеєра (знову таки заради спрощення), а усі RISC інструкції виконуються за один машинний цикл, який в нас точно дорівнюється одному тактовому інтервалу.

1.3 Верифікація VHDL моделі комп'ютера

Отже наша VHDL проімплементована. Далі її необхідно перевірити часовим симулюванням на рівні вентилів. Тепер можна перевірити по часовим діаграмам правильність виконання нашої тестової програми.

Рис.5 Часове симулювання моделі на рівні вентилів

Необхідно зауважити те, вміст програмного лічильника змінюється так як ми і передбачали.

2. VHDL модель прототипу RISC комп'ютера

Далі подамо всі модулі з яких складається VHDL модель SPIM RISC комп'ютера.

2.1 Топ-файл VHDL моделі комп'ютера

Це ? структурна архітектура усього комп'ютера, складеного з окремих модулів IF, ID, EXE, MEM та CTL (керування).

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

- SPIM top module

- One cycle MIPS TM (J. Hennessy & D. Patterson,1998).

- Xilinx WebPack 9.1i

- Submodules: IF_chip, ID_chip, EX_chip,MEM_chip, CTL_chip

entity A_SPIM is

port ( clock : in std_logic;

reset : in std_logic;

PC : out std_logic_vector(7 downto 0));

end A_SPIM;

architecture spim_structure of A_SPIM is

component ID_chip

port( clock : in std_logic;

reset : in std_logic;

Instruction : in std_logic_vector(31 downto 0);

write_data : in std_logic_vector(7 downto 0);

RegWrite : in std_logic;

RegDst : in std_logic;

Immediate : out std_logic_vector(7 downto 0);

Rs : out std_logic_vector(7 downto 0);

Rt : out std_logic_vector(7 downto 0);

Opcode : out std_logic_vector(5 downto 0));

end component;

omponent IF_chip

port( clock : in std_logic;

reset : in std_logic;

Branch_Address : in std_logic_vector(7 downto 0);

PCsrc : in std_logic;

Instruction : out std_logic_vector(31 downto 0);

NPC : out std_logic_vector(7 downto 0);

PCview : out std_logic_vector(7 downto 0));

end component;

component EX_chip

port( Branch : in std_logic;

ALUSrc : in std_logic;

NPC : in std_logic_vector(7 downto 0);

Rs : in std_logic_vector(7 downto 0);

Rt : in std_logic_vector(7 downto 0);

Immediate : in std_logic_vector(7 downto 0);

ALUResult : out std_logic_vector(7 downto 0);

Branch_Address : out std_logic_vector(7 downto 0);

PCsrc : out std_logic);

end component;

component CTL_chip

ort( Op : in std_logic_vector(5 downto 0);

RegDst : out std_logic;

ALUSrc : out std_logic;

MemtoReg : out std_logic;

RegWrite : out std_logic;

MemWrite : out std_logic;

Branch : out std_logic);

end component;

component MEM_chip

port( clock : in std_logic;

reset : in std_logic;

Memwrite : in std_logic;

MemtoReg : in std_logic;

address : in std_logic_vector(7 downto 0);

write_data : in std_logic_vector(7 downto 0);

writeback_data : out std_logic_vector(7 downto 0));

end component;

signal NPC_bus : std_logic_vector(7 downto 0);

signal Rs_bus : std_logic_vector(7 downto 0);

signal Rt_bus : std_logic_vector(7 downto 0);

signal OpCode_bus : std_logic_vector(5 downto 0);

signal Imm_bus : std_logic_vector(7 downto 0);

signal BrAddress_bus : std_logic_vector(7 downto 0);

signal ALUresult_bus : std_logic_vector(7 downto 0);

signal write_back_bus : std_logic_vector(7 downto 0);

signal Instruction_bus : std_logic_vector(31 downto 0);

ignal Branch_wire : std_logic;

signal PCsrc_wire : std_logic;

signal RegWrite_wire : std_logic;

signal MemtoReg_wire : std_logic;

signal ALUSrc_wire : std_logic;

signal MemWrite_wire : std_logic;

signal RegDst_wire : std_logic;

begin

U_IF : IF_chip port map(

clock => clock,

reset => reset,

Branch_Address => BrAddress_bus,

PCsrc => PCsrc_wire,

Instruction => Instruction_bus,

NPC => NPC_bus,

PCview => PC);

U_ID : ID_chip port map(

clock => clock,

reset => reset,

instruction => Instruction_bus,

write_data => write_back_bus,

RegWrite => RegWrite_wire,

RegDst => RegDst_wire,

Rs => Rs_bus,

Rt => Rt_bus,

OpCode => OpCode_bus,

Immediate => Imm_bus);

U_EX: EX_chip port map (

Branch => Branch_wire,

ALUSrc => ALUSrc_wire,

NPC => NPC_bus,

Rs => Rs_bus,

Rt => Rt_bus,

Immediate => Imm_bus,

PCsrc => PCsrc_wire,

Branch_Address => BrAddress_bus,

ALUResult => ALUResult_bus);

_CTL: CTL_chip port map(

Op => OpCode_bus,

RegDst => RegDst_wire,

ALUSrc => ALUSrc_wire,

MemtoReg => MemtoReg_wire,

RegWrite => RegWrite_wire,

MemWrite => MemWrite_wire,

Branch => Branch_wire);

_MEM: MEM_chip port map (

clock => clock,

reset => reset,

MemWrite => MemWrite_wire,

MemtoReg => MemtoReg_wire,

writeback_data => write_back_bus,

address => ALUResult_bus,

write_data => Rt_bus);

end spim_structure;

2.2 Модуль керування (CTL)

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

-ctrl_chip

library IEEE;

use IEEE.STD_LOGIC_1164.all;

use IEEE.STD_LOGIC_ARITH.all;

entity ctrl_chip is

port(

Op : in STD_LOGIC_VECTOR(5 downto 0);

RegDst : out STD_LOGIC;

ALUSrc : out STD_LOGIC;

MemWrite : out STD_LOGIC;

MemtoReg : out STD_LOGIC;

RegWrite : out STD_LOGIC;

Branch : out STD_LOGIC

);

nd ctrl_chip;

-}} End of automatically maintained section

rchitecture behav of ctl_chip is

signal R_format, lw, sw, beq : std_logic;

begin

R_format <= ((not Op(5)) and (not Op(4)) and (not Op(3)) and

(not Op(2)) and (not Op(1)) and (not Op(0)));

lw <= ( Op(5)) and (not Op(4)) and (not Op(3)) and

(not Op(2)) and ( Op(1)) and ( Op(0));

sw <= ( Op(5)) and (not Op(4)) and ( Op(3)) and

(not Op(2)) and ( Op(1)) and ( Op(0));

beq <= ( not Op(5)) and (not Op(4)) and (not Op(3)) and

( Op(2)) and (not Op(1)) and (not Op(0));

RegDst <= R_format;

ALUSrc <= lw or sw;

MemtoReg <= lw;

RegWrite <= R_format or lw;

MemWrite <= sw;

Branch <= beq;

end behav;

Рис.6 Структура комбінаційного модуля керування: на вході - біти інструкції, на виході - біти керування

Як R-format позначені машинні інструкції, що працюють з регістровими даними, наприклад: add r1, r2, r3;

lw - машинна інструкція завантаження слова з комірки пам'яті до регістра; sw - машинна інструкція збереження вмістимого регістра у комірці пам'яті; beq -машинна інструкція умовного переходу за ознакою рівності.

Перелічимо вихідні мікронакази, що генерує вузол керування: RegDest, ALUsrc, MemToReg, RegWrite, MtmRead, MemWrite, Branch, ALUOp1 та ALUOp2.

2.3 Модуль виконання операцій (ЕХЕ)

Модуль ЕХЕ виконує операції.

-- EX-chip

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity ex_chip is

port( Branch : in std_logic;

ALUSrc : in std_logic;

NPC : in std_logic_vector(7 downto 0);

Rs : in std_logic_vector(7 downto 0);

Rt : in std_logic_vector(7 downto 0);

Immediate : in std_logic_vector(7 downto 0);

ALUResult : out std_logic_vector(7 downto 0);

Branch_Address : out std_logic_vector(7 downto 0);

PCsrc : out std_logic);

end ex_chip;

architecture behav of ex_chip is

signal Branch_Address_tmp : std_logic_vector(8 downto 0);

signal Zero : std_logic;

begin

ALUresult <= (Rs + Rt) when (ALUsrc = '0') else (Rs + Immediate);

Branch_Address_tmp <= ('0' & NPC)+(Immediate(6 downto 0) &'0'&'0');

Branch_Address <= Branch_Address_tmp(7 downto 0);

Zero <= '1' when (Rs = Rt) else '0';

PCsrc <= Branch and Zero;

end behav;

2.4 Mодуль декодування інструкцій (ID)

Модуль ID/OF (декодувати інструкцію/вибрати операнди) містить регістровий файл, інтерфейс якого до АЛП подає рис.7. Комбінаційний пристрій керування SPIM RISC розглядаємо окремо.

Рис.7 Інтерфейс регістрового файлу до АЛП

- ID chip

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity ID_chip is

port ( clock : in std_logic;

reset : in std_logic;

RegWrite : in std_logic;

RegDst : in std_logic;

instruction : in std_logic_vector(31 downto 0);

write_data : in std_logic_vector( 7 downto 0);

Immediate : out std_logic_vector(7 downto 0);

Rs : out std_logic_vector(7 downto 0);

Rt : out std_logic_vector(7 downto 0);

OpCode : out std_logic_vector(5 downto 0));

end ID_chip;

architecture behav of ID_chip is

signal reg1,reg2,reg3,reg4,

reg5,reg6,reg7 : std_logic_vector(7 downto 0);

signal reg1tmp,reg2tmp,reg3tmp,reg4tmp,

reg5tmp,reg6tmp,reg7tmp: std_logic_vector(7 downto 0);

signal reg1wr,reg2wr,reg3wr,reg4wr,

reg5wr,reg6wr,reg7wr : std_logic;

signal rd_addr1,rd_addr2 : std_logic_vector(4 downto 0);

signal wr_addr_ALUop,wr_addr_LWop,

wr_addr : std_logic_vector(4 downto 0);

begin

OpCode <= Instruction(31 downto 26);

rd_addr1 <= Instruction(25 downto 21);

rd_addr2 <= Instruction(20 downto 16);

wr_addr_ALUop <= Instruction(15 downto 11);

wr_addr_LWop <= Instruction(20 downto 16);

Immediate <= Instruction(7 downto 0);

with rd_addr1(4 downto 0) select

Rs <= x"00" when "00000",

reg1 when "00001",

reg2 when "00010",

reg3 when "00011",

reg4 when "00100",

reg5 when "00101",

reg6 when "00110",

reg7 when "00111",

x"FF" when others;

with rd_addr2(4 downto 0) select

Rt <= x"00" when "00000",

reg1 when "00001",

reg2 when "00010",

reg3 when "00011",

reg4 when "00100",

reg5 when "00101",

reg6 when "00110",

reg7 when "00111",

x"FF" when others;

wr_addr <= wr_addr_ALUop when RegDst='1' else wr_addr_LWop;

reg1wr<='1' when ((wr_addr="00001") and (RegWrite='1')) else '0';

reg2wr<='1' when ((wr_addr="00010") and (RegWrite='1')) else '0';

reg3wr<='1' when ((wr_addr="00011") and (RegWrite='1')) else '0';

reg4wr<='1' when ((wr_addr="00100") and (RegWrite='1')) else '0';

reg5wr<='1' when ((wr_addr="00101") and (RegWrite='1')) else '0';

reg6wr<='1' when ((wr_addr="00110") and (RegWrite='1')) else '0';

reg7wr<='1' when ((wr_addr="00111") and (RegWrite='1')) else '0';

reg1tmp <= write_data when reg1wr='1' else reg1;

reg2tmp <= write_data when reg2wr='1' else reg2;

reg3tmp <= write_data when reg3wr='1' else reg3;

reg4tmp <= write_data when reg4wr='1' else reg4;

reg5tmp <= write_data when reg5wr='1' else reg5;

reg6tmp <= write_data when reg6wr='1' else reg6;

reg7tmp <= write_data when reg7wr='1' else reg7;

process

begin

wait until clock'event and clock='1';

if reset='1' then

reg1 <= x"A1";

reg2 <= x"A2";

reg3 <= x"A3";

reg4 <= x"A4";

reg5 <= x"A5";

reg6 <= x"A6";

reg7 <= x"A7";

else

reg1 <= reg1tmp;

reg2 <= reg2tmp;

reg3 <= reg3tmp;

reg4 <= reg4tmp;

reg5 <= reg5tmp;

reg6 <= reg6tmp;

reg7 <= reg7tmp;

end if;

end process;

end behav;

2.5 Mодуль IF

- IF chip

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity IF_chip is

port( clock : in std_logic;

reset : in std_logic;

PCsrc : in std_logic;

Branch_Address : in std_logic_vector(7 downto 0);

PCview : out std_logic_vector(7 downto 0);

Instruction : out std_logic_vector(31 downto 0);

NPC : out std_logic_vector(7 downto 0));

end IF_chip;

architecture behav of IF_chip is

signal PC : std_logic_vector(7 downto 0);

signal Input_PC : std_logic_vector(7 downto 0);

signal NPC_temp : std_logic_vector(7 downto 0);

- Test Program

constant rom0 : std_logic_vector(31 downto 0) :=x"8c040000";

- lw $4, 0($0)

constant rom1 : std_logic_vector(31 downto 0) := x"8c050001";

- lw $5, 1($0)

constant rom2 : std_logic_vector(31 downto 0) := x"00852020";

- add $4, $4, $5

constant rom3 : std_logic_vector(31 downto 0) := x"ac040000";

- sw $4, 0($0)

constant rom4 : std_logic_vector(31 downto 0) := x"1080fffb";

- beq $4, $0, -20

constant rom5 : std_logic_vector(31 downto 0) := x"1084ffff";

- beq $4, $4, -4

constant rom6 : std_logic_vector(31 downto 0) := x"00000025";

- or $0, $0, $0

constant rom7 : std_logic_vector(31 downto 0) :=x"00000025";

- or $0, $0, $0

begin

PCview <= PC;

NPC_temp(7 downto 2) <= PC(7 downto 2) + 1;

NPC_temp(1 downto 0) <= b"00";

NPC <= NPC_temp;

Input_PC <= Branch_Address when PCsrc = '1' else NPC_temp;

process

begin

wait until (clock'event) and (clock='1');

If reset='1' then

PC <= x"00";

else

PC <= Input_PC;

end if;

end process;

process (PC)

begin

case PC(7 downto 2) is

when "000000" => instruction <= rom0;

when "000001" => instruction <= rom1;

when "000010" => instruction <= rom2;

when "000011" => instruction <= rom3;

when "000100" => instruction <= rom4;

when "000101" => instruction <= rom5;

when "000110" => instruction <= rom6;

when "000111" => instruction <= rom7;

when others => instruction <= x"00000000";

end case;

end process;

end behav;

2.6 Модуль пам'яті (МЕМ)

Призначення модуля полягає у збереженні операндів та результатів виконання операцій. Це і є пам'ять даних.

- MEM-chip

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity MEM_chip is

port (clock : in std_logic;

reset : in std_logic;

MemWrite : in std_logic;

MemToReg : in std_logic;

address : in std_logic_vector(7 downto 0);

write_data : in std_logic_vector(7 downto 0);

writeback_data : out std_logic_vector(7 downto 0));

nd MEM_chip;

rchitecture behav of MEM_chip is

signal read_data : std_logic_vector(7 downto 0);

signal cell0, cell1 : std_logic_vector(7 downto 0);

signal tmp0, tmp1 : std_logic_vector(7 downto 0);

signal wr0, wr1 : std_logic;

begin

read_data <= cell0 when address=x"00" else

cell1 when address=x"01" else

x"FF";

writeback_data <= address when MemtoReg='0' else read_data;

wr0 <= '1' when MemWrite = '1' and address(0) = '0' else '0';

wr1 <= '1' when MemWrite = '1' and address(0) = '1' else '0';

tmp0 <= write_data when wr0 ='1' else cell0;

tmp1 <= write_data when wr1 ='1' else cell1;

process

begin

wait until clock'event and clock='1';

f (reset = '1') then

cell0 <= x"02";

cell1 <= x"FE";

else

cell0 <= tmp0;

cell1 <= tmp1;

end if;

end process;

end behav;

2.7 Автоматично згенерований файл (Test Bench)

Автоматично згенерований файл Test Bench нульові стартові значення всіх вхідних сигналів.

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE ieee.std_logic_unsigned.all;

USE ieee.numeric_std.ALL;

ENTITY tb_vhd IS

END tb_vhd;

ARCHITECTURE behavior OF tb_vhd IS

-- Component Declaration for the Unit Under Test (UUT)

COMPONENT A_SPIM

PORT(

clock : IN std_logic;

reset : IN std_logic;

PC : OUT std_logic_vector(7 downto 0)

);

END COMPONENT;

--Inputs

SIGNAL clock : std_logic := '0';

SIGNAL reset : std_logic := '1';

--Outputs

SIGNAL PC : std_logic_vector(7 downto 0);

BEGIN

-- Instantiate the Unit Under Test (UUT)

uut: A_SPIM PORT MAP(

clock => clock,

reset => reset,

PC => PC

);

clock <= not clock after 50ns;

reset <= '0' after 180ns;

tb : PROCESS

BEGIN

-- Wait 100 ns for global reset to finish

wait for 100 ns;

-- Place stimulus here

wait; -- will wait forever

END PROCESS;

END;

Висновки

В даній курсовій роботі я розробив приклад тестової програми та на її основі VHDL модель одноциклового RISC комп'ютера з архітектурою SPIM, ознайомився з програмою САПР Xilinx WebPack, та основними її принципами роботи.

Виконавши дану курсову роботу можна зробити висновок, що HDL спроектована для всього спектру потреб, які виникають в процесі проектування. По-перше, вона дозволяє описати структуру проекту, тобто його поділ на складові частини та їх взаємозв'язок. По-друге, вона дозволяє описати функцію проекту використовуючи подібні до мови програмування форми. По-третє, як результат, вона дозволяє змоделювати проект перед початком виготовлення, так що проектувальники можуть швидко порівняти альтернативи та перевірити правильність функціонування без затримки та витрат на апаратне макетування.

Список використаної літератури

1. Норенков И.П. Основы автоматизированного проектирования. 2-е издание. МГТУ им. Н. Э. Баумана. 2009. C. 336

2. Сергиенко А. М. VHDL для проектирования вычислительных устройств. ТИД "ДС". 2010. C. 208

3. Веб-сторінка компанії Aldec®, Inc [Електронний ресурс] http://www.aldec.com

4. Макларов С. В. Моделирование бизнес-процессов.

Размещено на Allbest.ru

...

Подобные документы

  • Синтез на основі поведінкового опису, виконаний розробниками на мові програмування класу HDL, як перспективний напрямок проектування цифрових пристроїв. Опис RISC-архітектури комп'ютерів. VHDL-модель прототипу RISC-комп'ютера. Основні модулі моделей.

    курсовая работа [1,1 M], добавлен 23.01.2014

  • Основні принципи дії та архітектура прототипних варіантів CISC-комп'ютера. Інструкції асемблерної мови і принцип трансляції асемблерної програми у машинний код. Розробка тестової програми. Перевірка правильності роботи реалізованих команд у прикладах.

    курсовая работа [446,1 K], добавлен 03.02.2011

  • Програми, які виводять на екран характеристики комп'ютера. Розробка програми "Монітор використання ресурсів комп’ютера" на мові програмування ASM-86. Алгоритм програми та її реалізація. Системні вимоги, інструкція для користувача, лістинг програми.

    курсовая работа [22,2 K], добавлен 08.08.2009

  • Складання, імлементація і верифікація VHDL моделі чотирибітового комп’ютера, що вбудовується до ПЛІС, містить процесор, пам'яті даних і машинних кодів. Перелік і функції машинних інструкцій процесора "Гном". Асемблерна тестова програма і її машинні коди.

    курсовая работа [24,3 K], добавлен 10.01.2010

  • Загальні відомості про мову VHDL, яка використовуються для проектування цифрових електронних систем та створення програмного продукту, її елементи. Способи структуризації програми, принципи об’єктно-орієнтованого програмування, засоби налагоджування.

    курсовая работа [34,9 K], добавлен 09.06.2010

  • Основні блоки персонального комп'ютера та їх значення. Варіанти організації внутрішньомашиного інтерфейсу. Функціональна схема мікропроцесору. Види запам'ятовуючих пристроїв. Послідовність роботи блоків комп'ютера. Основні зовнішні та внутрішні пристрої.

    курсовая работа [346,8 K], добавлен 05.01.2014

  • Історія появи перших обчислювальних машин. Пам'ять як один із основних елементів комп'ютера, що дозволяє йому нормально функціонувати. Значення внутрішньої пам'яті комп'ютера з позиції зберігання інформації. Аналіз зовнішньої пам’яті та її модернізація.

    реферат [24,4 K], добавлен 27.12.2011

  • "Критичні" комплектуючі комп'ютера. Процесор та оперативна пам'ять. Швидкість роботи комп'ютера. Порівняння швидкодії комплектуючих з роботою еталонних моделей. Стратегія і варіанти модернізації. Функціональні особливості побудови материнської плати.

    курсовая работа [4,6 M], добавлен 24.06.2013

  • Призначення програми BurnInTest та її функціональні можливості. Конфігурація тестового стенду. Тестування жорсткого диску комп’ютера з використанням програми HD TunePro. Рекомендації по підвищенню продуктивності та оптимізації комп’ютера, що тестується.

    курсовая работа [4,8 M], добавлен 27.02.2013

  • Огляд та класифікація комп'ютерних ігор. Алгоритм розташування кораблів на ігровому полі. Виконання алгоритму гри комп'ютера з використанням методу випадкових чисел. Стратегія гри комп'ютера. Обґрунтування вибору середовища програмної реалізації.

    курсовая работа [616,5 K], добавлен 26.01.2023

  • Системний блок як корпус, який містить основні компоненти персонального комп’ютера. Коротка характеристика головних зовнішніх та внутрішніх пристроїв персонального комп’ютера. Послідовність операцій при обтиску та обробленні роз'єму "витої пари".

    лабораторная работа [1,7 M], добавлен 02.06.2011

  • Загальна характеристика проблеми тепловиділення персональних комп'ютерів. Принципи і типи охолодження компонентів комп'ютера. Можливості модуля багатоканального контролера. Принципова схема і конструкція блоку контролю. Вимірювальна і сервісна апаратура.

    отчет по практике [5,7 M], добавлен 23.01.2016

  • Експонентний розвиток комп'ютерної техніки. Будова сучасного комп'ютера, призначення основних елементів. Будова центрального процесора. Оперативная пам'ять та материнська плата. Будова звукової карти. Характеристика жорсткого диска. Склад чипсету.

    презентация [1,4 M], добавлен 25.02.2010

  • Властивості та класифікація оперативної пам'яті комп'ютера. Пам'ять типу ROM, DRAM, DDR2 та DDR3, кеш-пам'ять SRАМ. Архітектурна будова пам'яті. Швидкість обміну інформацією з жорстким диском та флеш-пам'яттю. Технічні характеристики оперативної пам'яті.

    реферат [147,1 K], добавлен 13.04.2014

  • Структура персонального комп'ютера. Центральний мікропроцесор, внутрішня і зовнішня пам'ять. Клавіатура, ручні маніпулятори та дисплей. Види накопичувачів, призначення жорсткого диску. Периферійні пристрої: принтери, сканери, модеми та факс-модеми.

    дипломная работа [44,9 K], добавлен 24.06.2009

  • Особливості удосконалення програми регулювання системного таймера комп'ютера. Специфіка розробки такої програми для роботи з мишею в текстовому й графічному режимах, що містить функції, пов'язані з її обслуговуванням. Робота з керуванням програмами.

    курсовая работа [356,2 K], добавлен 05.03.2012

  • Ведення протоколу роботи комп’ютера. Розробка програми для створення списку розширень файлів і занесення часу і дати доступу до них на мові програмування Асемблер. Виклик переривання 21h код-функції та занесення до регістрів. Алгоритм та лістинг програми.

    курсовая работа [14,1 K], добавлен 08.08.2009

  • Мова асемблер для кожного типу комп'ютера своя. Асемблер орієнтований саме на специфіку комп'ютера або на специфіку процесора. Мікропроцесори, що належать до різних сімейств, мають свої системи команд. Система команд МП ІA 32 - режими адресації.

    лекция [36,2 K], добавлен 13.04.2008

  • Загальна класифікація роботів. Проектування та розробка системи управління промисловим роботом "Електроніка НЦ ТМ-01" на базі IBM–сумісного персонального комп’ютера. Структурно функціональна схема взаємодії систем робота. Блок схема системи управління.

    дипломная работа [3,6 M], добавлен 25.10.2012

  • Внутрішнє представлення в пам’яті комп’ютера даних базових та похідних типів, масивів. Ідентифікатор, зв'язаний з константним виразом та основи представлення даних. Алгоритм представлення цілих, дійсних, логічних і символьних чисел, структур і об’єднань.

    курсовая работа [279,1 K], добавлен 25.08.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.