реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Помогите написать VHDL и Verilog задание на синтез
_alex__
сообщение Feb 28 2017, 20:33
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 25-06-14
Пользователь №: 82 059



Нужно написать задание в формате и 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
Go to the top of the page
 
+Quote Post
Maverick
сообщение Feb 28 2017, 22:04
Сообщение #2


я только учусь...
******

Группа: Модераторы
Сообщений: 3 395
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(_alex__ @ Feb 28 2017, 22:33) *
Нужно написать задание в формате и 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 проектов.


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Mar 1 2017, 05:02
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 430
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(_alex__ @ Feb 28 2017, 23:33) *

Код
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 - Mar 1 2017, 06:14
Go to the top of the page
 
+Quote Post
_alex__
сообщение Mar 1 2017, 07:57
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 25-06-14
Пользователь №: 82 059



Цитата(Flip-fl0p @ Mar 1 2017, 05:02) *
Надо при помощи элементов И-НЕ в VHDL/VERILOG описать схему дешифратора ?
Допустим я на VHDL/VERILOG опишу элемент И-НЕ, а сам опишу сам дешифратор опишу в схемном редакторе, это подойдет ?
Да и минимизация - это очень спорный вопрос, не факт что минимизация при помощи карт Карно-Вейча, с последующим переносом схемы на VHDL даст результат лучше, чем явное поведенческое описание на языке VHDL/VERILOG.
Попробуйте при помощи карт Карно-Вейча получить уравнения описывающие поведение выходов в базисе И-НЕ и потом просто описать все 32 вывода вручную. Как при помощи карт Карно описать дешифратор можно глянуть тут: http://gorgeous-karnaugh.com/ru/uchebnik/p...-4-decoder.html


мне нужно разобраться как на языках:
1)Verilog
2)VHDL
составить задание для САПР на синтез и минимизацию такого устройства в базисе И-НЕ.
Т.е. результатом синтеза должна быть минимизированная схема устройства, состоящая
из логических элементов И-НЕ.
Go to the top of the page
 
+Quote Post
Lerk
сообщение Mar 1 2017, 08:37
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 302
Регистрация: 5-05-11
Пользователь №: 64 797



Цитата
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 кода готовый минимизированный нетлист в требуемом базисе.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Mar 1 2017, 08:41
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 430
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(_alex__ @ Mar 1 2017, 10:57) *
мне нужно разобраться как на языках:
1)Verilog
2)VHDL
составить задание для САПР на синтез и минимизацию такого устройства в базисе И-НЕ.
Т.е. результатом синтеза должна быть минимизированная схема устройства, состоящая
из логических элементов И-НЕ.

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

Сообщение отредактировал Flip-fl0p - Mar 1 2017, 08:50
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Mar 1 2017, 08:45
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 834
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(_alex__ @ Mar 1 2017, 10:57) *
Т.е. результатом синтеза должна быть минимизированная схема устройства, состоящая
из логических элементов И-НЕ.
Это какой же САПР так делает?
Синтезатор раскладывает схему в тот базис, который есть в целевой плисине, а там далеко не И-НЕ.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Mar 1 2017, 09:21
Сообщение #8


я только учусь...
******

Группа: Модераторы
Сообщений: 3 395
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(_alex__ @ Mar 1 2017, 09:57) *

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


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
_alex__
сообщение Mar 1 2017, 19:06
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 25-06-14
Пользователь №: 82 059



мне нужно спроектировать и минимизировать такое устройство в базисе И-НЕ
без привязки к какой либо ПЛИС.
программа modelsim от mentor умеет такое делать?
Go to the top of the page
 
+Quote Post
Tausinov
сообщение Mar 1 2017, 21:58
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 122
Регистрация: 19-10-13
Пользователь №: 78 795



Цитата(_alex__ @ Mar 1 2017, 22:06) *
мне нужно спроектировать и минимизировать такое устройство в базисе И-НЕ
без привязки к какой либо ПЛИС.
программа modelsim от mentor умеет такое делать?


ModelSim - симулятор, там вы сможете только сравнить результат работы вашей схемы с эталонной таблицей истинности.
К вопросу о минимизации - это придется делать ручками или какой-то специальной программой, в современных ПЛИС вся логика реализуется на LUT, т.о. ни о каком базисе тут речь уже не идет. В целом задача довольно тривиальная - рисуем карту Карно, получаем схему колдуем, переводя ее в нужный базис, кодируем и проверяем работу.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Mar 2 2017, 05:06
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 430
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(_alex__ @ Mar 1 2017, 22:06) *
мне нужно спроектировать и минимизировать такое устройство в базисе И-НЕ
без привязки к какой либо ПЛИС.
программа modelsim от mentor умеет такое делать?

Так проектируйте. Карты Карно Вам в помощь. Ссылку на пример, как это можно делать я Вам давал.
Вы точно правильно поняли задание ?
Очень странно, что преподаватель сказал делать именно так : по VHDL\Verilog описанию получить минимизированную(скорее всего по количеству лог. элементов, поскольку это классика) схему в базисе Шеффера.
Мне кажется надо делать наоборот. Полученную схему в базисе Шеффера перевести в HDL - тогда задание логичное и понятное поскольку надо будет:
1. Нарисовать таблицу истиности.
2. Нарисовать карты Карно.
3. При помощи карт Карно получить минимизированные функции.
4. Перевести их в базис Шеффера.
5. Нарисовать общую схему устройства.
6. Описать полученную схему на языках HDL.
Описанные пункты - это классика в обучении студентов.
Go to the top of the page
 
+Quote Post
likeasm
сообщение Mar 2 2017, 11:05
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 15-04-10
Пользователь №: 56 673



Ловите код супер дешифратора на Verilog
CODE
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 - Mar 2 2017, 11:07
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Mar 2 2017, 12:12
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 430
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(likeasm @ Mar 2 2017, 14:05) *
Ловите код супер дешифратора на Verilog
CODE
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.gif
Go to the top of the page
 
+Quote Post
likeasm
сообщение Mar 2 2017, 12:21
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 15-04-10
Пользователь №: 56 673



Это был сарказм bb-offtopic.gif
Go to the top of the page
 
+Quote Post
_alex__
сообщение Mar 2 2017, 13:37
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 25-06-14
Пользователь №: 82 059



здесь привели программу gorgeous-karnaugh.com
которая именно минимизацией занимается.
а какие еще существуют программы именно для минимизации логических функций в
опредленном базисе?
в matlab такое возможно?
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th December 2017 - 23:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01366 секунд с 7
ELECTRONIX ©2004-2016