Выдержки из руководства по использованию и расширению библиотек моделей микросхем серии КР1533-54-74ХХ

Функциональная верификация проектов

Лабораторный практикум

по курсу

 

"СОВРЕМЕННЫЕ МЕТОДЫ ПРОЕКТИРОВАНИЯ ЦИФРОВЫХ

СИСТЕМ"

 

раздел Моделирование

 

Москва 2015

 

 

ВВЕДЕНИЕ

 

Содержание -описания трех лабораторных работ с примерами и контрольными вопросами.

Цельлабораторного практикума состоит в изучении способов построения HDL- моделей цифровых устройств и методов их верификации

Приобретаемые навыки ─ углубленное изучение HDL и методов моделирования .

Лабораторный практикум тесно связан с типовым расчетным заданием.

Он помогает студенту выполнить ряд типовых пунктов расчетного задания.

Напоминаем, чтотиповое расчетное задание средней сложности состоит из верификации курсового проекта запоминающего устройства(КП ЗУ), выполненного на 3-м курсе (6 семестр).Подробнее см. материал «Расчетное задание».

Типовое расчетное задание по КП ЗУ предполагает :

построение HDL модели микросхемы памяти и ее тестирование,

построение HDL модели устройства управления ЗУ и его

тестирование,

построение функциональной модели всего ЗУ

построение полного теста ЗУ и тестирующей программы

верификацию проекта ЗУ моделированием.

 

Студенту придется в расчетном задании использовать имеющиеся на кафедре или по желанию создавать свои собственные HDL модели микросхем памяти и модели микросхем серий КР1533-54-F74 серий (или их зарубежных аналогов).

 

В первой работе студент знакомится с использованием библиотек моделей элементов на примере фрагмента своего КП ЗУ типа регистр-дешифратор

Во второй работе тестирует микросхему памяти своего КП ЗУ

В третьей работе тестирует устройство уравления своего КП ЗУ.

 

Все это студент выполняет в составе трех лабораторных работ и результаты этих работ включаются в его типовое расчетное задание-верификацию модели всего ЗУ в целом.

 

ЛАБОРАТОРНАЯ РАБОТА 1

Изучение способов построения структурных моделей узлов из микросхем среднего уровня интеграции

 

Цель работы состоит в изучении моделей микросхем серий 1533-1554-F74, использовавшихся в курсовом проекте по ЗУ третьего курса и способов верификации проектов методом моделирования на примере узла из этих микросхем.

Приобретаемые навыки ─ умение реализовать простейшие модели узлов цифровой аппаратуры на HDL с использованием проектных библиотек.

Во всех заданиях предполагается выбор по Вашему номеру в списке группы (см. таблица заданий HDL)- варианта узла, построения структурного описания узла из микросхем серии, использовавшейся в вашем КП ЗУ, и составление тестирующей программы. После этого следует провести функциональную верификацию проекта узла моделированием.

 

Работа рассчитана на 4 часа занятий в классе ПЭВМ.

Напоминаем, что вы можете разрабатывать собственные HDL -модели используемых в вашем проекте ЗУ микросхем СИС или брать библиотечные модели кафедры ВМСиС МЭИ , можете применять язык описания аппаратуры VHDL или VERILOG , можете использовать любую систему моделирования- например ISIM ,входящую в САПР ISE фирмы XILINX или ACTIVE-HDL , освоенную вами на 3 курсе, можете использовать СХЕМНЫЙ РЕДАКТОР или описывать схему алгебраически на HDL и т.п. Главное, чтобы потом , при построении более сложных узлов вашего проекта ЗУ, вам бы не пришлось снова возвращаться к азам моделирования.

 

Домашняя подготовка

 

Ознакомиться с описанием данной лабораторной работы.

Изучить соответствующие разделы конспекта лекций по курсу , вспомнить свой КП ЗУ, выполненный на 3 курсе . Прочесть рекомендуемую литературу по системе моделирования( ISIM- www.xilinx.com или ACTIVE-HDL- www.aldec.com). Просмотреть HDL- коды библиотеки кафедры ВМСиС МЭИ моделей микросхем серии , использовавшейся вами в КП ЗУ 3 курса . Подготовить файлы модели схемы узла и тестбенча вашего проекта.

ВСЕ ЭТО МОЖНО СДЕЛАТЬ Дома. При желании можно выполнить не только моделирование узла и но и его синтез- если желаете лучше освоить раздел по лабораторному практикуму по разделу ПЛИС (если у вас установлена и используется САПР ISE фирмы XILINX (www.xilinx.com).

НА КАФЕДРЕ УСТАНОВЛЕНЫ: САПР ISE фирмы XILINX с ее системой моделирования ISIM и система моделирования ACTIVE –HDL student edition.

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

.

 

Лабораторное задание

Варианты индивидуальных заданий см.ниже.

Перед началом работы проводится коллоквиум ( вопросы см.ниже).

При выполнении работы необходимо пользоваться рекомендациями, приведенными в приложениях А-В-С. Серию микросхем студент выбирает ту, которую он использовал в своем проекте ЗУ на 3 курсе.

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

Завершается выполнение работы защитой с оценкой, которая учитывается в итоговой оценке в зачете по курсу.

 

Таблица 1

Варианты заданий к лаб.1

№ варианта функция узла    
6- разрядный регистр на защелках ИР22 и дешифратор 3 х 6 на его выходах  
Счетчик типа ие7, связанный с регистром на защелках типа ИР22  
JK триггер и счетчик ИЕ9 ,соединенные последовательно  
Двунаправленный приемо-передатчик из микросхем типа АП3  
Счетчик типа ие10,связаннвй с регистром ИР23 на Д-триггерах  
Два 8 разрядных регистра ИР23 на Д-триггерах ,соединенные последовательно  
Два 8 разрядных регистра на триггерах ИР23 ,работающих на общую шину соединенные с третьим регистром, принимающим информацию  
8- разрядный регистр ИР22 на триггерах-защелках и дешифратор 4 х 13 на его выходах  
Регистры ИР29 соединенные друг с другом  
Счетчик типа ие18,связанный с регистром ИР22 на защелках  
Счетчик по модулю 3 на двух J-K триггерах  
Счетчик типа ие10,связаннвй с дешифратором 3х6  
Счетчик типа ие11, связанный с регистром ир23 на D-триггерах  
8- разрядный регистр на триггерах и дешифратор 2х 3 на его выходах  
Схема определения четности на выходе регистра типа ир23  
Счетчик по модулю 9 на базе 8 разрядного счетчика ИЕ18  
Два 8 разрядных регистра ИР 32, соединенные друг с другом  
8 разрядный регистр ир 37 и дешифратор 3*8 на его выходе  
Два счетчика ИЕ10,соединенных последовательно  
Приемо-передатчик типа АП6 и два Д триггера на его выходах  
Схема одноразрядного сумматора на микросхемах И,ИЛИ,НЕ  
Общая шина на двух регистрах ИР23 прием и передача информации между ними  
3-х разрядный счетчик на JK триггерах  
Регистр ИР29 и мультиплексор 8*1 на его выходе  
Регистры ИР 22 ,Ир23 и ир29 соединенные последовательно  
Счетчики ИЕ7 и ИЕ9 соединенные последовательно  
Двух разрядный мультиплексор 2*1 и дешифратор 2*4 на его выходе  
Счетчик по модулю 5 на базе счетчика ИЕ 9  
Мультиплексор 8 *1 на базе мультиплексоров из серии 1533  
Счетчик ие10 и JK триггер на выходе сигнала переноса  
Счетчик ие11 и схема контроля четности на его выходе  
Счетчик ИЕ7 и дешифратор ие3 на его выходе  
Регистр ИР29 и дешифратор ид14 на его выходе  
Два RS триггера-защелки на вентилях ИНЕ, соединенных последовательно  
3 разрядный регистр сдвига вправо и влево на Д-триггерах  
Регистр ир38 и схема контроля четности на его выходе  
Регистр ИР24 и дешифратор 4* 16 на его выходе  
Двунаправленный приемо-передатчик на элементах АП3  
Счетчик ИЕ18 и дешифратор 2*4 на его выходе  
3 разрядный счетчик по модулю 5 на JK- триггерах  
3 разрядный Регистр сдвига на Д-триггерах  

 

 

Типичные ошибки студентов

 

1. Путают библиотеки моделей микросхем ( их три- 1533,1554 и F74) и модели их узлов (15хх). Например, в библиотеке моделей микросхем кр1533, модель дешифратора KP1533_ID14 содержит два дешифратора 2-4 и имеет 6 входов и 8 выходов, а в библиотеке 15ХХ

модель ID14 описывает дешифратор 2-4 и имеет 3 входа и 4 выхода.

Обращение к модели KP1533_ID14 как имеющей 3 входа и 4 выхода дает ошибку компиляции.

2. Почти все VHDL модели микросхем и узлов описывают выходы как OUT. Но когда, например в задании потребовалось соединить один из выходов первой половины микросхемы KP1533_ID14 с входом

второй половины этой же микросхемы , то компилятор дал сообщение об ошибке, т. к. с выхода OUT нельзя считывать. Пришлось подправить в модели OUT на INOUT.

 

Контрольные вопросы

1. Чем отличается поведенческое и структурное описание проекта на VHDL?

2. Что надо сделать, чтобы построить самопроверяющийся тест?

3. Зачем подключают VHDL пакет STD_LOGIC_1164? Какие значения могут принимать сигналы пакета?

4. Как описать на VHDL генератор синхросигналов ?

5. В чем основное отличие описаний схем с памятью и комбинационных?

6. Как описывать тристабильные буфера на VHDL?

7. Какие действия необходимы для компиляции модели схемы узла?

8. Как вывести на экран ПЭВМ временную диаграмму всех (включая внутренние) сигналов проекта?

9. Какими средствами VHDL описываются задержки сигналов?

10. Что такое ПАКЕТ в VHDL и зачем его используют?

12 Чем отличается поименованная карта портов от позиционной?

13.Чем отличаются векторные модели микросхем в библиотеке от скалярных?

14 Как изменять задержки во всех микросхемах библиотеки одновременно?

15. Как индивидуализировать задержки разных экземпляров одной и той же микросхемы в вашем проекте?

16. Как организованна модель одной из микросхем, использованных в вашем проекте?

17. Как реализованы модели задержек сигналов в моделях микросхем ,

использованных в проекте?

18. Чем отличаются модели микросхем , содержащих несколько элементов от моделей этих элементов

19 Чем отличаются модели компонент библиотек микросхем типа КР1533-ЛЗ1554-А74 от моделей компонент библиотеки 15ХХ?

20.Прокомментируйте VHDL-код модели микросхемы АП6( приемо-передатчик) в библиотеке КР1533.

21. Реальные элементы микросхем серии КР1533-54 имеют инерциальную или транспортную задержку?

22.Как добавить во временную диаграмму моделирования внутренние сигналы

схемы?

23.Чем отличаются микросхемы серий 1533 и 1554?

24. как пользоваться схемотехническим вводом описания устройства.

Примеры моделей узлов

ПРИМЕР 1

Проверка работы узла- регистра состоящего из одной микросхемы КР1554ИР23. Применяется алгебраическая форма описания схемы узла .

Используется библиотека моделей микросхем серии КР1554- пакет КР1554 включен в рабочую библиотеку work.В этом случае перед компиляцией модели регистра необходимо компилировать описание пакета. Для экономии памяти можно использовать не весь пакет КР1554, а только одну из его компонентов use work.KP1554. KP1554IR23; Если есть желание уменьшить время компиляции, то можно выделить в отдельный файл из текста пакета описание интерфейса и архитектуры нужных компонентов и включить в состав проекта. Тогда обращение к пакету излишне, но описания компонентов придется вставить в текст модели узла.

 

------------------------------------------------------------------------------

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

use work.KP1554.ALL;

---- Uncomment the following library declaration if instantiating

---- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

 

entity reg is

Port ( d00 : in STD_LOGIC;

d10 : in STD_LOGIC;

d20 : in STD_LOGIC;

d30 : in STD_LOGIC;

d40 : in STD_LOGIC;

d50: in STD_LOGIC;

d60 : in STD_LOGIC;

d70 : in STD_LOGIC;

ez0 : in STD_LOGIC;

clk0 : in STD_LOGIC;

 

q00: out STD_LOGIC;

q10 : out STD_LOGIC;

q20 : out STD_LOGIC;

q30 : out STD_LOGIC;

q40 : out STD_LOGIC;

q50 : out STD_LOGIC;

q60 : out STD_LOGIC;

q70 : out STD_LOGIC);

end reg;

 

architecture Behavioral of reg is

begin

reg1: KP1554IR23 port map (

d00,d10,d20,d30,d40,d50,d60,d70,ez0,clk0,q00,q10,q20,q30,q40,q50,q60,q70);

 

end Behavioral;

 

НИЖЕ ТЕСТ модели регистра

 

--------------------------------------------------------------------------------

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE ieee.std_logic_unsigned.all;

USE ieee.numeric_std.ALL;

 

ENTITY test_vhd IS

END test_vhd;

 

ARCHITECTURE behavior OF test_vhd IS

 

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

COMPONENT reg

PORT(

d00 : IN std_logic;

d10 : IN std_logic;

d20 : IN std_logic;

d30 : IN std_logic;

d40 : IN std_logic;

d50 : IN std_logic;

d60 : IN std_logic;

d70 : IN std_logic;

clk0 : IN std_logic;

ez0 : IN std_logic;

q00 : OUT std_logic;

q10 : OUT std_logic;

q20 : OUT std_logic;

q30 : OUT std_logic;

q40 : OUT std_logic;

q50 : OUT std_logic;

q60 : OUT std_logic;

q70 : OUT std_logic

);

END COMPONENT;

 

--Inputs

SIGNAL d00 : std_logic := '0';

SIGNAL d10 : std_logic := '0';

SIGNAL d20 : std_logic := '0';

SIGNAL d30 : std_logic := '0';

SIGNAL d40 : std_logic := '0';

SIGNAL d50 : std_logic := '0';

SIGNAL d60 : std_logic := '0';

SIGNAL d70 : std_logic := '0';

SIGNAL clk0 : std_logic := '0';

SIGNAL ez0 : std_logic := '0';

 

--Outputs

SIGNAL q00 : std_logic;

SIGNAL q10 : std_logic;

SIGNAL q20 : std_logic;

SIGNAL q30 : std_logic;

SIGNAL q40 : std_logic;

SIGNAL q50 : std_logic;

SIGNAL q60 : std_logic;

SIGNAL q70 : std_logic;

 

BEGIN

 

-- Instantiate the Unit Under Test (UUT)

uut: reg PORT MAP(

d00 => d00,

d10 => d10,

d20 => d20,

d30 => d30,

d40 => d40,

d50 => d50,

d60 => d60,

d70 => d70,

ez0 => ez0,

clk0 => clk0,

q00 => q00,

q10 => q10,

q20 => q20,

q30 => q30,

q40 => q40,

q50 => q50,

q60 => q60,

q70 => q70

);

 

gen: process --- процесс описывает генератор тактов - период 20 ns

begin

clk0<=not clk0 ; wait for 25 ns;

end process;

 

 

tb : PROCESS—описывает подачу разных данных на вход

BEGIN

 

-- Wait 100 ns for global reset to finish

wait for 110 ns;

d00<='1';

d10<='1';

d20<='1';

d30<='1';

 

d40<='0';

d50<='0';

d60<='0';

d70<='0';

wait for 50 ns;

d00<='0';

d10<='0';

d20<='1';

d30<='1';

 

d40<='1';

d50<='1';

d60<='0';

d70<='0';

wait for 5 ns;-- слишком малая задержка ?

 

ez0<='1';--

 

wait for 50 ns;

 

wait; -- will wait forever

END PROCESS;

 

END;

 

 

ПРИМЕР 2

Студент решил использовать для моделирования узла свою собственную библиотеку моделей микросхем. В его работе рассмотрено моделирование цифровой схемы, состоящей из двух компонентов: счетчика КР1554ИЕ23 и дешифратора КР1554ИД14:

Красным цветом показаны имена портов компонентов, использованные при их описании на языке VHDL, зеленым – названия внутренних сигналов, использованных при описании цифровой схемы.

 

Код функциональной модели счетчика (Lab1_2_CT.vhd):

----------------------------------------------------------------------------------

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

 

entity Lab1_2_CT is

Port ( C0 : in STD_LOGIC;

C1 : in STD_LOGIC;

R : in STD_LOGIC;

D : out UNSIGNED (3 downto 0):=(others => '0'));

 

end Lab1_2_CT;

 

architecture CT of Lab1_2_CT is

signal Dtmp : UNSIGNED (3 downto 0):=(others => '0');

begin

process(C0,C1,R) begin

 

if ((rising_edge(C0) and C1 = '1') or (falling_edge(C1) and C0 = '0')) and R='1' then

if Dtmp = 15 then

Dtmp <= (others =>'0') after 20 ns;

else

Dtmp <= Dtmp+1 after 20 ns;

end if;

end if;

 

if falling_edge (R) then

Dtmp <= (others =>'0') after 20 ns;

end if;

 

end process;

 

D <= Dtmp;

 

end CT;

 

Код модели дешифратора (Lab1_2_DC.vhd):

----------------------------------------------------------------------------------

----------------------------------------------------------------------------------

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

entity Lab1_2_DC is

Port ( A0 : in STD_LOGIC;

A1 : in STD_LOGIC;

E : in STD_LOGIC;

DO : out UNSIGNED (3 downto 0):=(others => '1'));

 

end Lab1_2_DC;

architecture DC of Lab1_2_DC is

begin

process (A0,A1,E) begin

 

if E = '1' then

DO <= "1111" after 10 ns;

else

 

if A1 = '0' then

if A0 = '0' then

DO <= "1110" after 10 ns;

else

DO <= "1101" after 10 ns;

end if;

else

 

if A0 = '0' then

DO <= "1011" after 10 ns;

else

DO <= "0111" after 10 ns;

end if;

 

end if;

end if;

 

end process;

 

end DC;

 

Код модели узла- счетчик с дешифратором (Lab1_2_CTDC.vhd):

 

----------------------------------------------------------------------------------

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

 

entity Lab1_2_CTDC is

Port ( C0 : in STD_LOGIC;

C1 : in STD_LOGIC;

R : in STD_LOGIC;

DO : out UNSIGNED (3 downto 0));

end Lab1_2_CTDC;

 

architecture CTDC of Lab1_2_CTDC is

 

component Lab1_2_CT Port( C0 : in STD_LOGIC;

C1 : in STD_LOGIC;

R : in STD_LOGIC;

D : out UNSIGNED (3 downto 0));

end component;

 

component Lab1_2_DC Port( A0 : in STD_LOGIC;

A1 : in STD_LOGIC;

E : in STD_LOGIC;

DO : out UNSIGNED (3 downto 0));

end component;

 

 

signal S : UNSIGNED (3 downto 0);

begin

 

S1: Lab1_2_CT port map (C0, C1, R, S);

S2: Lab1_2_DC port map (S(0), S(1), S(2), DO);

 

end CTDC;

 

Код теста модели счетчика(Lab1_2_CT_TB.vhd):

--------------------------------------------------------------------------------

--

-- VHDL Test Bench Created by ISE for module: Lab1_2_CT

-- This testbench has been automatically generated using types std_logic and

-- std_logic_vector for the ports of the unit under test. Xilinx recommends

-- that these types always be used for the top-level I/O of a design in order

-- to guarantee that the testbench will bind correctly to the

--post-implementation

-- simulation model.

--------------------------------------------------------------------------------

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

ENTITY Lab1_2_CT_TB IS

END Lab1_2_CT_TB;

 

ARCHITECTURE behavior OF Lab1_2_CT_TB IS

 

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

 

COMPONENT Lab1_2_CT

PORT(

C0 : IN std_logic;

C1 : IN std_logic;

R : IN std_logic;

D : OUT UNSIGNED (3 downto 0)

);

END COMPONENT;

 

--Inputs

signal C0 : std_logic := '0';

signal C1 : std_logic := '1';

signal R : std_logic := '1';

 

--Outputs

signal D : UNSIGNED(3 downto 0);

-- No clocks detected in port list. Replace <clock> below with

-- appropriate port name

 

constant C_period : time := 50 ns;

 

BEGIN

-- Instantiate the Unit Under Test (UUT)

uut: Lab1_2_CT PORT MAP (

C0 => C0,

C1 => C1,

R => R,

D => D

);

 

-- Clock process definitions

C_process :process

begin

C0 <= '0';

wait for C_period/2;

C0 <= '1';

wait for C_period/2;

end process;

 

stim_proc: process

begin

-- hold reset state for 1000 ns.

wait for 1000 ns;

R <= '0' ;

wait for C_period*3;

R <= '1' ;

end process;

END;

 

Код теста модели дешифратора (Lab1_2_DC_TB.vhd):

--------------------------------------------------------------------------------

 

--------------------------------------------------------------------------------

LIBRARY ieee;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

 

-- Uncomment the following library declaration if using

-- arithmetic functions with Signed or Unsigned values

--USE ieee.numeric_std.ALL;

 

ENTITY Lab1_2_DC_TB IS

END Lab1_2_DC_TB;

 

ARCHITECTURE behavior OF Lab1_2_DC_TB IS

 

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

 

COMPONENT Lab1_2_DC

PORT(

A0 : IN std_logic;

A1 : IN std_logic;

E : IN std_logic;

DO : OUT UNSIGNED(3 downto 0)

);

END COMPONENT;

 

--Inputs

signal A0 : std_logic := '0';

signal A1 : std_logic := '0';

signal E : std_logic := '0';

 

--Outputs

signal DO : UNSIGNED(3 downto 0);

-- No clocks detected in port list. Replace <clock> below with

-- appropriate port name

 

constant C_period : time := 50 ns;

 

BEGIN

-- Instantiate the Unit Under Test (UUT)

uut: Lab1_2_DC PORT MAP (

A0 => A0,

A1 => A1,

E => E,

DO => DO

);

 

-- Stimulus process

stim_proc: process

begin

wait for 150 ns;

A0 <= '1';

wait for C_period;

A0 <= '0';

A1 <= '1';

wait for C_period;

A0 <= '1';

wait for 3*C_period;

E <= '1';

wait for 3*C_period;

end process;

 

END;

 

Код теста модели узла из счетчика и дешифратора(Lab1_2_CTDC_TB.vhd):

 

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

 

-- Uncomment the following library declaration if using

-- arithmetic functions with Signed or Unsigned values

--USE ieee.numeric_std.ALL;

 

ENTITY Lab1_2_CTDC_TB IS

END Lab1_2_CTDC_TB;

 

ARCHITECTURE behavior OF Lab1_2_CTDC_TB IS

 

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

 

COMPONENT Lab1_2_CTDC

PORT(

C0 : IN std_logic;

C1 : IN std_logic;

R : IN std_logic;

DO : out UNSIGNED (3 downto 0)

);

END COMPONENT;

 

 

--Inputs

signal C0 : std_logic := '0';

signal C1 : std_logic := '1';

signal R : std_logic := '1';

 

--Outputs

signal DO : UNSIGNED (3 downto 0);

-- No clocks detected in port list. Replace <clock> below with

-- appropriate port name

 

constant C_period : time := 50 ns;

 

BEGIN

-- Instantiate the Unit Under Test (UUT)

uut: Lab1_2_CTDC PORT MAP (

C0 => C0,

C1 => C1,

R => R,

DO => DO

);

 

-- Clock process definitions

C0_process :process

begin

 

C0 <= '0';

wait for C_period/2;

C0 <= '1';

wait for C_period/2;

 

end process;

 

stim_proc: process

begin

wait for 1000 ns;

R <= '0' ;

wait for C_period*3;

R <= '1' ;

end process;

 

END;

 

-------------------------------------------------------------------------------------------------

Временная диаграмма работы модели счетчика Lab1_2_CT

 

 

Временная диаграмма работы модели дешифратора Lab1_2_CT

Временная диаграмма работы узла из счетчика и дешифратора Lab1_2_CTDC

 

 

Выдержки из руководства по использованию и расширению библиотек моделей микросхем серии КР1533-54-74ХХ

ОБЩИЕ СВЕДЕНИЯ

На кафедре ВМСиС имеются три библиотеки отечественных микросхем: КР1533,КР1554 и обобщенная библиотека элементов типа 1533-1554 (частей микросхем), а также библиотека моделей зарубежных микросхем серии 74ХХ.

Библиотеки включают в себя примерно 50 моделей микросхем каждой из серии KP1533-54-74хх, описанных на языке VHDL. Библиотеки предназначены не только для моделирования, но и для синтеза. Библиотеки оформлены как пакеты соответственно KP1533,КР1554,КР15ХХ,lib74F. Названия файлов совпадают с именами пакетов. Величины задержек элементов в библиотеках по умолчанию максимальные из приведенных в справочнике, но пользователю их легко изменять( см ниже).Напоминаем-Библиотеки KP1533,КР1554 и lib74F содержат описания микросхем- корпусов - это пакеты и, соответственно, файлы КР1533,1554 и F74.vhd. Библиотека узлов - логических элементов –частей микросхем это пакет KP15XX - файл KP15XX.vhd.

Во все библиотеки только с целью моделирования старых (до 2006г) проектов ЗУ добавлены несинтезабельные модели двух элементов - RC цепочки-задержки и AG3 - одновибратора. Они используются при моделировании устройств управления в тех проектах ЗУ, где использовались такие элементы для реализации задержек, а не счетчики.

Кроме того в библиотеки добавлены несинтезабельные модели генераторов сигналов. Они пригодятся тем, кто не хочет описывать генераторы внешних воздействий на HDL а желает использовать их типовые компоненты – например, генератор тактовых сигналов, генератор входных сигналов с о счетчика и тп.

Во всех библиотеках наряду со скалярными моделями элементов имеются и их векторные аналоги. Векторные модели позволяют более компактно описывать схемы с шинами. Имена векторных моделей элементов отличаются от их скалярных аналогов наличием суффикса _V в именах.

Например, IR22 и IR22_V.

В векторных моделях, например, регистра IR22_V, IR23_V можно на вход D подавать 8 разрядный вектор, а не описывать поразрядную связь с 8 сигналами данных на входах и выходах и т.п. Векторизация описаний, как отмечалось, сокращает обьем описаний схем.

Библиотеки в основном ориентированы на моделирование и синтез схем управления и обработки данных в курсовых проектах по ЗУ. Включены в них в основном лишь модели микросхем, используемых в курсовых проектах кафедры ВМСС МЭИ по курсу ЗУ. В версии, где модели микросхем описаны в виде корпусов, выводы питания и земли исключены, обозначения выводов корпуса приближено к обозначениям выводов корпусов, указанных в СПРАВОЧНИКе по микросхемам КР1533-КР1554 из-ва БИНОМ,1993 г. Библиотеки в основном не включает микросхемы с открытым коллектором. Все задержки моделей микросхем параметризованы. В ряде случаев в моделях задержки фронтов сигналов не различаются, например для вентилей типа ЛА3 берутся средние задержки( Т01+Т10)/2,в других случаях ,как уже отмечено, времена задержек берутся наихудшие -МАКСИМАЛЬНЫЕ. Есть небольшие неточности - в ряде моделей регистров –например в модели ИР22 в библиотеке 15ХХ видим такое

Tpzh:time:=40* Td;

Tpzl:time:=25* Td

Но это примерное соотношение для 1533 серии, а в 1554 эти задержки

примерно равны и не сильно отличаются от задержек прохождения сигналов через триггера, равные примерно 15 ns.

 

Задержки в библиотеке могут легко меняться- смотри описания компонентов в заголовке пакетов, где задержки представлены как произведения константы на некоторый коэффициент TD – который обычно равен 1 ,но изменив который можно изменить задержки всех элементов. Почти все модели проверены, как проводились тесты, смотри документ «Тестирование библиотеки». Если есть необходимость в использовании, например, зарубежных серий, аналогов 1554, то берется берется либо lib74F ,либо соответствующий пакет-например1554 или 15хх и временному параметру Td присваиваем значение не 1,а 0,7 (Td:time:=0,7 ns), что означает меньшую примерно на треть задержку элементов.

Модели элеменов структурные, те построены как схемы(приведенные в справочниках) из базовых элементов- примитивов пакета m_prims, таких как Д-триггер и тп. В моделях используется 9 –значный алфавит моделирования пакета STD_LOGIC_1164.

Отметим, что при появлении на входах библиотечных элементов высокоимпедансных - Z сигналов, они воспринимаются в моделях как неопределенные - X.Можно неиспользуемые входы элементов не подключать, но это не рекомендуется правилами схемотехники ( для ряда технологий - ТТЛ висящий в воздухе вход =1, хотя такой режим не рекомендован - шину обычно подтягивают к земле или питанию, желающим учесть эти тонкости следует проверить библиотеку на таких сигналах (слабый 0,слабая 1) и, может, им придется поправить модели).

Если триггера не сброшены, то на выходах их моделей имеем U.

Все модели синтезабельны (кроме RC-цепочек и одновибратора АГ3), т.е. проходят через систему синтеза в базисе ПЛИС, но не все полученные из сделанных из структурных описаний микросхем синтезатором САПР ПЛИС схемы счетчиков и сдвигателей в базисе ПЛИС эффективны.

То же можно сказать про проекты схем, где авторы используют JK триггера ( типа ТМ2) библиотек как асинхронные RS триггера- при синтезе в базисе ПЛИС не рекомендуется использовать ЗАЩЕЛКИ,тк можно получить плохие схемы.

Библиотека, как уже отмечалось, описана в виде пакетов (PACKAGE), название пакетов KP1533, KP1554,КР15ХХ., lib74F.

Модели элементов библиотек, как отмечалось строятся структурно на базе вспомогательного пакета m_prims, в котором описаны примитивы, из которых строятся структурные модели микросхем(D,JK триггера и т.п.).

Таким образом, пользователь библиотек в модели своего устройства всегда, кроме стандартных пакетов IEEE, подключает два пакета. Например, компилирует комбинацию в виде двух файлов KP1533.vhd (пакет- KP1533-корпусные модели микросхем серии KP1533) и файл m_prims.vhd (пакет примитивов m_prims), и в заголовке модели своего устройства описывает подключение (USE) двух соответствующих пакетов.

Повторяем.В файле KP1533.vhd находятся описания моделей элементов (входные, выходные порты, временные задержки, функции моделей), а в m_prims.vhd примитивы (триггера, защелки и т.п.), из которых строятся модели сложных

микросхем.

 

Второй пример - Файл с элементами ( модели узлов ,а не корпусов микросхем)без корпусов КР15ХХ.vhd (пакет КР15ХХ) и файл m_prims.vhd (пакет примитивов m_prims).

 

2. КАК УСТРОЕНЫ И КАК ИСПОЛЬЗОВАТЬ БИБЛИОТЕКИ ?

 

Обращаем внимание на то, что при использовании в проекте библиотек-пакетов нет необходимости в описании в проекте их компонент - они описаны в пакетах!

ПРИМЕР МОДЕЛИ цепочки счетчиков, ИСПОЛЬЗОВАВШЕЙСЯ ДЛЯ ТЕСТИРОВАНИЯ МОДЕЛЕЙ узлов-СЧЕТЧИКОВ библиотеки КР15ХХ._ Сравнивались скалярные и векторные модели

----------------------------------------------------------------------------------

-- Company:

-- Engineer: POLIAKOV-AGAFONOV

-- Create Date: 02:23:34 10/26/2007

-- Design Name:

-- Module Name: CNT - Behavioral

----------------------------------------------------------------------------------

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

use work.KP15xx.all;

entity CNT is

Port ( clk : in STD_LOGIC;

ECR : in STD_LOGIC;

ECT : in STD_LOGIC;

nEWR : in STD_LOGIC;

nR : in STD_LOGIC;

q1 : out STD_LOGIC_VECTOR (0 to 7);

q2 : out STD_LOGIC_VECTOR (0 to 7);

q1_v : out STD_LOGIC_VECTOR (0 to 7);

q2_v : out STD_LOGIC_VECTOR (0 to 7)

);

end CNT;

 

architecture Behavioral of CNT is

SIGNAL wire_CR1: STD_LOGIC;

SIGNAL wire_CR2: STD_LOGIC;

SIGNAL wire_CR1_v: STD_LOGIC;

SIGNAL wire_CR2_v: STD_LOGIC;

 

begin

--скалярные модели

DD1: IE10 PORT MAP ( D1=>'0', D2=>'1', D4=>'0', D8=>'0', ECT=>ECT, ECR=>ECR, C=>clk, EWR=>nEWR, R=>nR,

Q1=>q1(0), Q2=>q1(1), Q4=>q1(2), Q8=>q1(3), CR=>wire_CR1);

 

DD2: IE9 PORT MAP ( D1=>'0', D2=>'1', D4=>'0', D8=>'0', ECT=>wire_CR1, ECR=>wire_CR1, C=>clk, EWR=>nEWR, R=>nR,

Q1=>q1(4), Q2=>q1(5), Q4=>q1(6), Q8=>q1(7));

 

DD3: IE18 PORT MAP ( D1=>'0', D2=>'1', D4=>'0', D8=>'0', ECT=>ECT, ECR=>ECR, C=>clk, EWR=>nEWR, R=>nR,

Q1=>q2(0), Q2=>q2(1), Q4=>q2(2), Q8=>q2(3), CR=>wire_CR2);

DD4: IE11 PORT MAP ( D1=>'0', D2=>'1', D4=>'0', D8=>'0', ECT=>wire_CR2, ECR=>wire_CR2, C=>clk, EWR=>nEWR, R=>nR,

Q1=>q2(4), Q2=>q2(5), Q4=>q2(6), Q8=>q2(7));

 

---------------------------------------------------------векторные модели

DD1_V: IE10_V PORT MAP ( D=>"0100",--D1=>'0', D2=>'1', D4=>'0', D8=>'0',

ECT=>ECT, ECR=>ECR, C=>clk, EWR=>nEWR, R=>nR,

Q=>q1_v(0 to 3), --Q1=>q1(0), Q2=>q1(1), Q4=>q1(2), Q8=>q1(3),

CR=>wire_CR1_v

);

 

DD2_V: IE9_V

PORT MAP (D=>"0100", --D1=>'0', D2=>'1', D4=>'0', D8=>'0',

ECT=>wire_CR1, ECR=>wire_CR1_v, C=>clk, EWR=>nEWR, R=>nR,

Q=>q1_v(4 to 7) --Q1=>q1(4), Q2=>q1(5), Q4=>q1(6), Q8=>q1(7)

);

DD3_V: IE18_V

PORT MAP ( D=>"0100",--D1=>'0', D2=>'1', D4=>'0', D8=>'0',

ECT=>ECT, ECR=>ECR, C=>clk, EWR=>nEWR, R=>nR,

Q=>q2_v(0 to 3),--Q1=>q2(0), Q2=>q2(1), Q4=>q2(2), Q8=>q2(3),

CR=>wire_CR2_v

);

DD4_V: IE11_V

PORT MAP ( D=>"0100",--D1=>'0', D2=>'1', D4=>'0', D8=>'0',

ECT=>wire_CR2_v, ECR=>wire_CR2_v, C=>clk, EWR=>nEWR, R=>nR,

Q=>q2_v(4 to 7) --Q1=>q2(4), Q2=>q2(5), Q4=>q2(6), Q8=>q2(7)

);

end Behavioral;