Перейти к содержанию
    

Помогите написать VHDL и Verilog задание на синтез

Нужно написать задание в формате и VHDL и Verilog на синтез и минимизацию комбинационного устройства в базисе И-НЕ с 5 входами и 32 выходами со следующей таблицей истинности:

 

00000 00000000000000000000000000000001

00001 00000000000000000000000000000010

00010 00000000000000000000000000000100

00011 00000000000000000000000000001000

00100 00000000000000000000000000010000

00101 00000000000000000000000000100000

00110 00000000000000000000000001000000

00111 00000000000000000000000010000000

01000 00000000000000000000000100000000

01001 00000000000000000000001000000000

01010 00000000000000000000010000000000

01011 00000000000000000000100000000000

01100 00000000000000000001000000000000

01101 00000000000000000010000000000000

01110 00000000000000000100000000000000

01111 00000000000000001000000000000000

10000 00000000000000010000000000000000

10001 00000000000000100000000000000000

10010 00000000000001000000000000000000

10011 00000000000010000000000000000000

10100 00000000000100000000000000000000

10101 00000000001000000000000000000000

10110 00000000010000000000000000000000

10111 00000000100000000000000000000000

11000 00000001000000000000000000000000

11001 00000010000000000000000000000000

11010 00000100000000000000000000000000

11011 00001000000000000000000000000000

11100 00010000000000000000000000000000

11101 00100000000000000000000000000000

11110 01000000000000000000000000000000

11111 10000000000000000000000000000000

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужно написать задание в формате и VHDL и Verilog на синтез и минимизацию комбинационного устройства в базисе И-НЕ с 5 входами и 32 выходами со следующей таблицей истинности:

 

00000 00000000000000000000000000000001

00001 00000000000000000000000000000010

00010 00000000000000000000000000000100

00011 00000000000000000000000000001000

00100 00000000000000000000000000010000

00101 00000000000000000000000000100000

00110 00000000000000000000000001000000

00111 00000000000000000000000010000000

01000 00000000000000000000000100000000

01001 00000000000000000000001000000000

01010 00000000000000000000010000000000

01011 00000000000000000000100000000000

01100 00000000000000000001000000000000

01101 00000000000000000010000000000000

01110 00000000000000000100000000000000

01111 00000000000000001000000000000000

10000 00000000000000010000000000000000

10001 00000000000000100000000000000000

10010 00000000000001000000000000000000

10011 00000000000010000000000000000000

10100 00000000000100000000000000000000

10101 00000000001000000000000000000000

10110 00000000010000000000000000000000

10111 00000000100000000000000000000000

11000 00000001000000000000000000000000

11001 00000010000000000000000000000000

11010 00000100000000000000000000000000

11011 00001000000000000000000000000000

11100 00010000000000000000000000000000

11101 00100000000000000000000000000000

11110 01000000000000000000000000000000

11111 10000000000000000000000000000000

 

Вам надо подправить это под свое - тут все просто, разбиретесь (мне честно лень)

 

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity decoder is
Port ( s : in STD_LOGIC_VECTOR (2 downto 0);
y : out STD_LOGIC_VECTOR (7 downto 0));
end decoder;

architecture Behavioral of decoder is
begin
with sel select
y<="00000001" when "000",
"00000010" when "001",
"00000100" when "010",
"00001000" when "011",
"00010000" when "100",
"00100000" when "101",
"01000000" when "110",
"10000000" when "111",
"00000000" when others;
end Behavioral;

 

Затем можете посмотреть RTL Viewer – утилита, которая дает возможность увидеть логическую реализацию проекта в графическом виде. Это очень полезный инструмент для анализа результатов синтеза HDL проектов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.NUMERIC_STD.ALL;

ENTITY DECODER IS
    GENERIC
    (
        DATA_WIDTH      : INTEGER   := 5;         -- Ширина входных данных
        EFFECTIVE_VALUE : STD_LOGIC := '1'        -- Если = 1 тогда  выод имеет такой вид: "0000100", если 0 тогда "1111011"
    );
    PORT
    (
        DATA        : IN  STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0); 
        DECODED     : OUT STD_LOGIC_VECTOR(DATA_WIDTH**2-1 DOWNTO 0)
    );
END ENTITY;

ARCHITECTURE RTL OF DECODER IS
BEGIN
    PROCESS
    (
        DATA
    )
    BEGIN
        DECODED <= (OTHERS => NOT EFFECTIVE_VALUE);               -- все разряды числа равны нулю или единице
        DECODED(TO_INTEGER(UNSIGNED(DATA))) <= EFFECTIVE_VALUE;   -- кроме номера разряда равного значению входа
    END PROCESS;
END ARCHITECTURE;

Таблица истинности, которую Вы показали - это обычный дешифратор.

Вот только не совсем понятно задание

Нужно написать задание в формате и VHDL и Verilog на синтез и минимизацию комбинационного устройства в базисе И-НЕ с 5 входами и 32 выходами со следующей таблицей истинности:

Надо при помощи элементов И-НЕ в VHDL/VERILOG описать схему дешифратора ?

Допустим я на VHDL/VERILOG опишу элемент И-НЕ, а сам опишу сам дешифратор опишу в схемном редакторе, это подойдет ?

Да и минимизация - это очень спорный вопрос, не факт что минимизация при помощи карт Карно-Вейча, с последующим переносом схемы на VHDL даст результат лучше, чем явное поведенческое описание на языке VHDL/VERILOG.

Попробуйте при помощи карт Карно-Вейча получить уравнения описывающие поведение выходов в базисе И-НЕ и потом просто описать все 32 вывода вручную. Как при помощи карт Карно описать дешифратор можно глянуть тут: http://gorgeous-karnaugh.com/ru/uchebnik/p...-4-decoder.html

Изменено пользователем Flip-fl0p

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надо при помощи элементов И-НЕ в VHDL/VERILOG описать схему дешифратора ?

Допустим я на VHDL/VERILOG опишу элемент И-НЕ, а сам опишу сам дешифратор опишу в схемном редакторе, это подойдет ?

Да и минимизация - это очень спорный вопрос, не факт что минимизация при помощи карт Карно-Вейча, с последующим переносом схемы на VHDL даст результат лучше, чем явное поведенческое описание на языке VHDL/VERILOG.

Попробуйте при помощи карт Карно-Вейча получить уравнения описывающие поведение выходов в базисе И-НЕ и потом просто описать все 32 вывода вручную. Как при помощи карт Карно описать дешифратор можно глянуть тут: http://gorgeous-karnaugh.com/ru/uchebnik/p...-4-decoder.html

 

мне нужно разобраться как на языках:

1)Verilog

2)VHDL

составить задание для САПР на синтез и минимизацию такого устройства в базисе И-НЕ.

Т.е. результатом синтеза должна быть минимизированная схема устройства, состоящая

из логических элементов И-НЕ.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

module dec(

input wire [4:0] w_in_code,

output wire [31 : 0] w_out_select

);

 

assign w_out_select = 1 << w_in_code ;

 

endmodule

 

Что касается синтеза и минимизации, то надо "просто взять" и выкинуть из библиотеки, которую использует сапр для синтеза, все кроме и-не. "задание" для сапр в моем понимании просто набор команд в скрипте, запуск которых даст вам из исходного HDL кода готовый минимизированный нетлист в требуемом базисе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

мне нужно разобраться как на языках:

1)Verilog

2)VHDL

составить задание для САПР на синтез и минимизацию такого устройства в базисе И-НЕ.

Т.е. результатом синтеза должна быть минимизированная схема устройства, состоящая

из логических элементов И-НЕ.

1. Какой САПР имел ввиду преподаватель ?

2. Что значит составить задание для САПР ?

3. Какой критерий минимизации ?

Если говорить про FPGA (во всяком случае я думаю, что Вы имеете ввиду именно FPGA\CPLD,поскольку тему создали в соответствующем подразделе форума), то САПР для работы с ними навряд ли сможет выполнить Вашу задачу, поскольку задача САПР синтезировать и разместить Ваше текстовое описание в логические ячейки (это если очень упрощённо говорить). Про устройство ПЛИС почитайте к примеру вот тут: https://marsohod.org/11-blog/265-fpga Таким образом заставить САПР создать текстовое описание схемы в виде базиса Шеффера невозможно, поскольку как такового внутри ПЛИС этого базиса нет, а внутри ПЛИС есть универсальные ячейки, которые могут быть сконфигурированы на выполнение определенных функций.

Тут скорее Вам надо найти программу, которая по описанию на VHDL/Verilog строит схему в базисе Шеффера. Есть ли такие программы - это уже другой вопрос. Пример текстового описания дешифратора на языке VHDL в данной теме приведён в 2 разных вариантах.

Изменено пользователем Flip-fl0p

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е. результатом синтеза должна быть минимизированная схема устройства, состоящая

из логических элементов И-НЕ.

Это какой же САПР так делает?

Синтезатор раскладывает схему в тот базис, который есть в целевой плисине, а там далеко не И-НЕ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так минимизацию делает уже сам САПР для ПЛИС, Вы описываете как я Вам показал. Все остальное САПР сделает сам.

Результат Вы можете посмотреть через указанную утилиту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

мне нужно спроектировать и минимизировать такое устройство в базисе И-НЕ

без привязки к какой либо ПЛИС.

программа modelsim от mentor умеет такое делать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

мне нужно спроектировать и минимизировать такое устройство в базисе И-НЕ

без привязки к какой либо ПЛИС.

программа modelsim от mentor умеет такое делать?

 

ModelSim - симулятор, там вы сможете только сравнить результат работы вашей схемы с эталонной таблицей истинности.

К вопросу о минимизации - это придется делать ручками или какой-то специальной программой, в современных ПЛИС вся логика реализуется на LUT, т.о. ни о каком базисе тут речь уже не идет. В целом задача довольно тривиальная - рисуем карту Карно, получаем схему колдуем, переводя ее в нужный базис, кодируем и проверяем работу.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

мне нужно спроектировать и минимизировать такое устройство в базисе И-НЕ

без привязки к какой либо ПЛИС.

программа modelsim от mentor умеет такое делать?

Так проектируйте. Карты Карно Вам в помощь. Ссылку на пример, как это можно делать я Вам давал.

Вы точно правильно поняли задание ?

Очень странно, что преподаватель сказал делать именно так : по VHDL\Verilog описанию получить минимизированную(скорее всего по количеству лог. элементов, поскольку это классика) схему в базисе Шеффера.

Мне кажется надо делать наоборот. Полученную схему в базисе Шеффера перевести в HDL - тогда задание логичное и понятное поскольку надо будет:

1. Нарисовать таблицу истиности.

2. Нарисовать карты Карно.

3. При помощи карт Карно получить минимизированные функции.

4. Перевести их в базис Шеффера.

5. Нарисовать общую схему устройства.

6. Описать полученную схему на языках HDL.

Описанные пункты - это классика в обучении студентов.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ловите код супер дешифратора на Verilog

module DC5in32(in,out);

input [4:0] in;
output reg [31:0] out;

integer i;

always @(*)
for(i=0;i<32;i=i+1)
out[i] =   (i[4] ? in[4] : ~in[4])
           &(i[3] ? in[3] : ~in[3])
           &(i[2] ? in[2] : ~in[2])
           &(i[1] ? in[1] : ~in[1])
           &(i[0] ? in[0] : ~in[0]);

endmodule

Изменено пользователем likeasm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ловите код супер дешифратора на Verilog

module DC5in32(in,out);

input [4:0] in;
output reg [31:0] out;

integer i;

always @(*)
for(i=0;i<32;i=i+1)
out[i] =   (i[4] ? in[4] : ~in[4])
           &(i[3] ? in[3] : ~in[3])
           &(i[2] ? in[2] : ~in[2])
           &(i[1] ? in[1] : ~in[1])
           &(i[0] ? in[0] : ~in[0]);

endmodule

Стесняюсь спросить, а чего в нем суперского ? :bb-offtopic:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

здесь привели программу gorgeous-karnaugh.com

которая именно минимизацией занимается.

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

опредленном базисе?

в matlab такое возможно?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...