Проектирование процессорного модуля

Автор работы: Пользователь скрыл имя, 06 Июня 2013 в 21:06, курсовая работа

Описание работы

Процессорный модуль представляет собой функционально законченное устройство со встроенной функцией отладки целевого программного обеспечения. Он содержит разъемы, на которые выведены все контакты микропроцессора. Процессорный модуль обеспечивает корректный старт и инициализацию микропроцессора после аппаратного сброса. Он может функционировать под управлением инструментального компьютера или без него. Взаимодействие инструментального компьютера и процессорного модуля осуществляется посредством отладочного интерфейса.

Содержание работы

ВВЕДЕНИЕ 7
1 ПОСТАНОВКА ЗАДАЧИ ПРОЕКТИРОВАНИЯ 9
2 ПРОЕКТИРОВАНИЕ ОПЕРАЦИОННОГО АВТОМАТА 12
3 ПРОЕКТИРОВАНИЕ УПРАВЛЯЮЩЕГО АВТОМАТА 19
4 ПРОЕКТИРОВАНИЕ ПРОЦЕССОРНОГО МОДУЛЯ 25
ВЫВОДЫ 28
ПЕРЕЧЕНЬ ССЫЛОК 29

Файлы: 1 файл

Проектирование ОА класса I.doc

— 646.00 Кб (Скачать файл)

elsif (y(12) = '1') then

C(n-1 downto 0) <= F & C(n-1 downto 1);

elsif (y(13) = '1') then

C(n-1 downto 0) <= C(n-1) & C(n-1 downto 1);

elsif (y(14) = '1') then

C(n-1 downto 0) <= IEEE.std_logic_unsigned."+"(C(n-1 downto 0),(not A(n-1 downto 0)));

C(n-1 downto 0) <= IEEE.std_logic_unsigned."+"(C(n-1 downto 0),1);

end if;

 

-- начало формирования микроопераций  для TgB

if (y(10) = '1') then

TgB <= B(0);

end if;

 

-- начало формирования микроопераций для CnT

if (y(7) = '1') then

Cnt <= Cnt-1;

end if;

end if; 

end process;

 

-- запись результата в реигстр

R <= C(2*n-1 downto 0) when y(8) = '1' else

C(n-1 downto 0)& B(n-1 downto 0) when y(15) = '1' else (others => 'Z');

 

X(0) <= F;

X(1) <= '1' when B = "00000" else '0';

X(2) <= '1' when CnT = 0 else '0';

X(3) <= '1' when B = "000000"  else '0';

X(4) <= '1' when F = '1' else  '0';

X(5) <= '1' when CnT = 0 else '0';

X(6) <= '1' when TgB = '1' else '0';

 

end architecture;

 

2.3. Верификация операционного автомата класса I приведена на рисунке 2.1


 

 

 

 

 

 

 

Рисунок 2.1 –  Верификация операционного автомата класса I

 

 

Результаты  построения схемы и  синтеза  операционного автомата показаны на рис. 2.1.

Рисунок 2.1 – Результаты построения и синтеза схемы операционного автомата

 

3 ПРОЕКТИРОВАНИЕ  УПРАВЛЯЮЩЕГО АВТОМАТА

 

  • 3.1. Объединенная закодированная ГСА с разметкой для проектирования автомата Мура приведена на рисунке 3.1.
  •  

    Рисунок  3.1 –Закодированная ГСА  с разметкой для проектирования автомата Мура

    3.2. Построение  отмеченной ГСА автомата Мура

     

    Если необходимо построить микропрограммный автомат  Мура, то содержательная ГСА управляющего автомата размечается в соответствии со следующими правилами:

    1) символом a0 отмечаются вершины «Начало» и «Конец»;

    2) различные  операторные вершины отмечаются  различными символами;

    3) все операторные  вершины должны быть отмечены.

    4) содержательные  термины микроопераций и логических  условий. заменяются их условными  обозначениями.

    ГСА после  разметки по приведенному алгоритму представлена на рис. 3.1

    После получения  отмеченной ГСА строится граф переходов  автомата. Он имеет столько различных  вершин, сколько различных букв аi с индексами имеется в отмеченной ГСА. Каждая вершина графа переходов  автомата отмечается буквой а с соответствующим индексом.

    Между двумя  вершинами графа имеется дуга, если на отмеченной ГСА между вершинами  с метками ai и ak, имеется путь. Над  дугой ставится входной сигнал, равный конъюнкции логических условий соответствующего пути в отмеченной ГСА. При этом выполнению логического условия соответствует переменная без отрицания, а невыполнению логического условия - переменная с отрицанием на соответствующей дуге графа переходов автомата.

    Если в  отмеченной ГСА между упомянутыми  вершинами с метками ai и аk имеется несколько путей, то в графе переходов автомата на дуге, связывающей аi и аk через символ дизъюнкции перечисляются все конъюнкции, соответствующие имеющимся путям.

    Если строится граф переходов автомата Мура, то символы  микроопераций (выходные сигналы управляющего автомата) записываются около соответствующих его вершин. Для автомата Мили символы микроопераций записываются на соответствующих дугах при конъюнкциях логических условий, описывающих путь через операторную вершину с рассматриваемой микрооперацией.

    Если в  отмеченной ГСА имеется безусловный  переход между операторными вершинами, т.е. путь, не проходящий ни через какие  условные вершины, то на графе переходов  автомата ему соответствует дуга, которой приписывается входной  сигнал «1», показывающий, что данный переход в автомате осуществляется при поступлении очередного синхросигнала.

    В дальнейшем синтез проводится с помощью описанного ранее метода структурного синтеза. Подчеркнем, что входными сигналами  синтезируемого структурного автомата являются конъюнкции булевых переменных (или дизъюнкции конъюнкций), каждая из которых отображает путь через соответствующие условные вершины отмеченной ГСА, а выходными сигналами - микрооперации, обозначающие либо вершины, либо дуги графа переходов автомата, в зависимости от его типа. Используя канонический метод структурного синтеза, можно построить функциональную схему автомата.

     

    3.2. Реализация  микропрограммы управляющего автомата  на VHDL.

    Листинг 3.1 – Исходный код управляющего автомата с жесткой логикой типа Мура

    library IEEE; 
    use IEEE.STD_LOGIC_1164.all; 
     
    entity ua is 
         port( 
             clk : in STD_LOGIC; -- вход синхронизации 
             rst : in STD_LOGIC; -- вход сброса 
             x   : in STD_LOGIC_VECTOR(1 to 7); -- входы логических условий 
             y   : out STD_LOGIC_VECTOR(1 to 15) -- выходы микроопераций 
             ); 
    end ua; 
    architecture ua of ua is  
    type TState is(s0,s1,s2,s3,s4,s5, s6, s7, s8, s9, s10, s11); -- множество внутренних состояний 
    signal State: TState; 
     
    begin 
    process(clk,rst)is --функция переходов 
    begin 
     if rst='0' then state<=s0; 
      elsif rising_edge(clk) then 
       case state is 
        when s0=>state<=s1; 
        when s1=>if x(1)='0' then state<=s2; 
                    else  if x(4)= '1' then state<=s6; 
                   else state<=s7; 
                   end if; 
                end if; 
        --when s1=>if x(3)='1' then state<=s6; 
                --else state<=s7; 
                --end if; 
         when s2=>if x(2)='1' then state<=s4; 
                else state<=s3; 
                end if;                 
        when s3=>state<=s4; 
        when s4=>if x(3)='1' then state<=s5; 
                else state<=s2; 
                end if; 
        when s5=>state<=s0;     
        when s6=>state<=s7;     
        when s7=>if x(5)='1' then state<=s8; 
                else state<=s9; 
                end if;     
         when s8=>if x(6)='0' then  
                     if x(4)='0' then state<=s7; 
                    else state<=s6; 
                   end if; 
                   else if x(7)='1' then state<=s10; 
                   else state<=s11; 
                end if; 
                end if; 
             when s9=>if x(6)='0' then  
                     if x(4)='0' then state<=s7; 
                    else state<=s6; 
                   end if; 
                   else if x(7)='1' then state<=s10; 
                   else state<=s11; 
                end if;     
                end if; 
        when s10=>state<=s11;     
        when s11=>state<=s0; 
       end case; 
     end if; 
    end process; 
     
    process(state)is  -- функция выходов 
    begin 
     y<="000000000000000"; 
     case state is 
      when s0=>Y<="000000000000000"; 
      when s1=>y(1)<='1'; y(2)<='1'; y(3)<='1'; 
      when s2=>y(4)<='1'; 
      when s3=>y(5)<='1'; 
      when s4=>y(6)<='1';y(7)<='1'
      when s5=>y(8)<='1'; 
      when s6=>y(9)<='1'; 
      when s7=>y(10)<='1'; y(11)<='1'; 
      when s8=>y(12)<='1'; 
      when s9=>y(13)<='1'; 
      when s10=>y(14)<='1'; 
      when s11=>y(15)<='1'; 
     end case; 
    end process; 
    end UA;

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    3.3. Верификация  управляющего автомата

    Верификация управляющего автомата с жесткой  логикой типа Мура приведена на рисунке 3.2


     

     

     

     

     

     

     

     

    Рисунок 3.2 -  Верификация управляющего автомата с жесткой логикой типа Мура

     

     

     

     

     

     

     

     

     

     

     

     

    4. ПРОЕКТИРОВАНИЕ ПРОЦЕССОРНОГО МОДУЛЯ

  • 4.1 Схема объединения операционного и управляющего автомата
  • Рисунок 4.1 – Результат синтеза  арифметически – логического  устройства, состоящего из операционной и управляющей части

    4.2. Реализация процессорного модуля на VHDL.

    library IEEE;

    use IEEE.STD_LOGIC_1164.all;

    use work.all;

     

    entity cpu is

    generic (n: natural:=6);

    port (clk, reset: in std_logic;

    D1: in std_logic_vector(n-1 downto 0);

    D2: in std_logic_vector(n-1 downto 0);

    f: in std_logic;

    R: out std_logic_vector(2*n - 1 downto 0));

    end cpu;

     

    --}} End of automatically maintained section

     

    architecture cpu of cpu is 

    component OA

    generic (n: natural:=6);

    port (clk, reset: in std_logic;

    D1: in std_logic_vector(n-1 downto 0);

    D2: in std_logic_vector(n-1 downto 0);

    f: in std_logic;

    R: out std_logic_vector(2*n - 1 downto 0);

    y:in std_logic_vector(15 downto 1);

    x:out std_logic_vector(6 downto 0) );

    end component ;

    component ua

         port(

             clk : in STD_LOGIC; -- âõîä ñèíõðîíèçàöèè

             rst : in STD_LOGIC; -- âõîä ñáðîñà

             x   : in STD_LOGIC_VECTOR(1 to 7); -- âõîäû ëîãè÷åñêèõ  óñëîâèé

             y   : out STD_LOGIC_VECTOR(1 to 15) -- âûõîäû ìèêðîîïåðàöèé

             );

    end component ;

    signal y: std_logic_vector (15 downto 1);

    signal x: std_logic_vector (6 downto 0);

    signal nclk: std_logic;

    begin

    nclk <= not clk;-- after 10 ns;

    dd1: oa port map (nclk,reset,D1,D2,f,R,y,x);

    dd2: ua port map (clk,reset,x,y);

    end cpu;

     

    При моделировании микропроцессорного устройства использовались следующие  методы верификации управляющего и операционного автоматов: при подаче входных синхроимпульсов на операционный и управляющий автоматы началась выработка осведомительных сигналов и сигналов переходов из операционной части. При наблюдении работы алгоритма функционирования устройства, данное микропроцессорное устройство показывает адекватный результат из ручным моделированием последовательности действий связанных со входным набором. ГСА для алгоритма быстрого умножения выполняется за 4 такта. Средняя продолжительность одного такта составляет 20 ns. Данные наблюдения на Waweform показывают, что операционный автомат четко генерирует сигналы ветвлений, а операционный автомат четко выделяет осведомительные сигналы и правильно переходит из одного состояния в другое, в соответствии с таблицей переходов автомата Мура. Waweform результатов верификации приведен на Рис. 4.2.

    Рисунок 4.2 –  Результаты верификации процессорного  модуля

     

     

     

     

     

     

     

    ВЫВОДЫ

     

    Данный курсовой проект разработан для изучения современных средств  проектирования  цифровых вычислительных машин. В этом проекте был разработан двухуровневый процессорный модуль, который был спроектирован на основе управляющего автомата Мура и операционного автомата класса I. С помощью данного устройства можно выполнять такие микрооперации, как сложение, умножение и деление двоичных знаковых и беззнаковых чисел. Автомат Мура является автоматом с жесткой логикой. Для таких автоматов затраты оборудование меньше (при сложных микрокомандах), чем в автоматах с принудительной адресацией. Чем сложнее микропрограмма, тем  меньше аппаратные затраты.

    Управляющие автоматы и автоматы с  жесткой логикой отличаются степенью гибкости. Автоматы с жесткой логикой  используются в современных микропроцессорных  устройствах, где набор выполняемых  команд строго задан. Также очень значительное применение автоматы с жесткой логикой используется в разработке арифметически - логических устройств. Для автоматов с жесткой логикой, при возникновении ошибки в микропрограмме, необходимо перестраивать структуру автомата. Программируемая логика позволяет решить задачу  перестройки структуры относительно просто – путем прошивки в ПЗУ дополнительных микрокоманд, изменяемых при внесении изменений в микропрограмму. Таким образом, можно считать, что гибкостью обладают только автоматы с программируемой логикой.

     

     

     

     

    ПЕРЕЧЕНЬ ССЫЛОК

     

    1. Майоров С.А., Новиков Г.И. Структура  электронных вычислительных машин  – Л.: Машиностроение. Ленингр. отд-ние, 1979. – 384 с.

    2. Угрюмов Е. Цифровая схемотехника  – СПб: BHV — Санкт-Петербург, 2000. – 528 с.

    3. Семенец В.В., Хаханова И.В., Хаханов  В.И. Проектирование цифровых  систем с использованием языка  VHDL. – Харьков, ХНУРЭ, 2003. – 492 с.

    4. Самофалов К.Г. Прикладная теория  цифровых автоматов - Высшая школа  – 1987. – 375 с.

    5. Кобяк И.П. Процессоры компьютерных систем. Синтез операционных автоматов: Метод. пособие по курсовому и дипломному проектированию по ТиП ЭВМ и СиФО ЭВМ для студентов специальности 40 02 01 «Вычислительные машины, системы и сети» дневной формы обучения / И.П. Кобяк. – Мн.: БГУИР, 2003. – 83 с.

    6. Савельев А.Я Арифметические  и логические основы цифровых  автоматов - Высшая школа –  1980. – 255с.

    7. Захаров Н.Г., Рогов В.Н. Синтез  цифровых автоматов: Учебное пособие. - Ульяновск: УлГТУ, 2003. - 135 с.

    8. Уилкинсон, Барри. Основы проектирования цифровых схем – Вильямс – 2004. – 320с.

     

     


    Информация о работе Проектирование процессорного модуля