«Работать добросовестно — значит: работать, повышая свою квалификацию, проявляя инициативу в совершенствовании продукции, технологий, организации работ, оказывая не предусмотренную должностными инструкциями помощь другим сотрудникам (включая и руководителей) в общей им всем работе.

Спец курс (Избранные главы VHDL)/Вспомним VHDL — различия между версиями

Материал из Wiki
Перейти к: навигация, поиск
(Слайд: Process)
(Слайд:When Else)
Строка 64: Строка 64:
 
<div class="tleft" style="clear:none">[[Файл:Process code.jpg|architecture]]</div>
 
<div class="tleft" style="clear:none">[[Файл:Process code.jpg|architecture]]</div>
 
<br clear="all" />
 
<br clear="all" />
 +
 +
=== When Else ===
 +
<source lang="vhdl">
 +
t1 <= not t1 when clk'event and clk = '1' else
 +
      t1;
 +
</source>
  
 
=== Слайд:When Else ===
 
=== Слайд:When Else ===
  
{{SideBar40|Данная запись является компактным описанием триггера, но она не соответствует стандарту синтезируемого подмножества. Поэтому не все системы синтеза её поддерживают. Например, '''Leonardo Spectrum''' синтезирует данную конструкцию, а в ранних версиях '''Synopsys`а'''  эта запись не поддерживалась.}}
+
{{SideBar40|Данная запись является компактным описанием триггера, но она не соответствует стандарту синтезируемого подмножества. Поэтому не все системы синтеза её поддерживают. Например, {{Зел|'''Leonardo Spectrum'''}} синтезирует данную конструкцию, а в ранних версиях {{Кр|'''Synopsys`а'''}} эта запись не поддерживалась.}}
  
 
<div style="border: 2px solid #AEA; padding: 0.4em; border-bottom: none; border-right: none; background: HoneyDew">
 
<div style="border: 2px solid #AEA; padding: 0.4em; border-bottom: none; border-right: none; background: HoneyDew">
 
+
<div class="tleft" style="clear:none">[[Файл:When_else_code.jpg|when else code]]</div>
<syntaxhighlight lang="vhdl">
+
data_out_i <= '0' when rst = '0' else
+
            data_in when clk'event and clk = '1' else
+
            data_out_i;
+
data_out <= data_out_i;
+
</syntaxhighlight>
+
 
+
 
+
<source lang="vhdl">
+
data_out_i <= '0' when rst = '0' else
+
            data_in when clk'event and clk = '1' else
+
            data_out_i;
+
data_out <= data_out_i;
+
</source>
+
</div>
+
 
+
<!-- {{Info|Данная запись является компактным описанием триггера, но она не соответствует стандарту синтезируемого подмножества. Поэтому не все системы синтеза её поддерживают. Например, '''Leonardo Spectrum''' синтезирует данную конструкцию, а в ранних версиях '''Synopsys`а'''  эта запись не поддерживалась.}}
+
-->
+
 
<br clear="all" />
 
<br clear="all" />
  

Версия 12:30, 18 сентября 2012

Заголовок
Введение в системы идентификации...
Автор
Зайцев В.С.
Нижний колонтитул
Спец курс (Избранные главы VHDL)/Вспомним VHDL
Дополнительный нижний колонтитул
Зайцев В.С., 00:27, 29 сентября 2015

Содержание

Слайд:Языки описания аппаратуры

  • С начала 70-х годов стала актуальна проблема создания стандартного средства документации схем и алгоритмов дискретных систем переработки информации, пригодных как для восприятия человеком, так и для обработки в ЭВМ.
  • Этим средством явились языки VHDL и Verilog
  • Стандартность (лучше плохой, чем никакого)
  • Многоаспектность и многоуровневость
    • Схемы
    • Тестовые окружения
    • Диапазон детализации
  • Человеко-машинность
    • Язык описания
    • Средство документирования
  • Было много предшественников
    • «МОДИС », «Автокод», «Модис-В78», «MPL», «OCC-2», «Форос», «Алгоритмы», «Пульс», «Симпатия»
    • CDL, DDL, ISPS, CONLAN, HILO

VHDL-основные конструкции

Entity

library ieee;
use ieee.std_logic_1164.all;
 
entity xc is
 
  port (
    clk : in  std_logic;
    d   : out std_logic);
 
end xc;

Слайд: Entity

Entity
Entity


Architecture

architecture beh of trig is
begin  -- beh
end beh;

Слайд:Architecture

architecture
architecture


Process

  trig_process: process (clk, rst)
  begin  -- process trig_process
    if rst = '0' then                   -- asynchronous reset (active low)
      data_out <= '0';
    elsif clk'event and clk = '1' then  -- rising clock edge
      data_out <= data_in;
    end if;
  end process trig_process;

Слайд: Process

architecture


When Else

t1 <= not t1 when clk'event and clk = '1' else
      t1;

Слайд:When Else

Данная запись является компактным описанием триггера, но она не соответствует стандарту синтезируемого подмножества. Поэтому не все системы синтеза её поддерживают. Например, Leonardo Spectrum синтезирует данную конструкцию, а в ранних версиях Synopsys`а эта запись не поддерживалась.

when else code


Слайд:Работа с редактором EMACS

Первый запуск

Команды

Возможности

Работа с системой моделирования QuestaSim от Mentor Graphics

Запуск QuestaSim

Создание библиотеки

Компиляция кода

Запуск моделирования

Добавление сигналов

===Запуск исполнения и просмотр результата===