Jump to content
    

Помогите написать 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

Share this post


Link to post
Share on other sites

Нужно написать задание в формате и 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 проектов.

Share this post


Link to post
Share on other sites

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

Edited by Flip-fl0p

Share this post


Link to post
Share on other sites

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

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

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

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

 

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

1)Verilog

2)VHDL

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

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

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

 

Share this post


Link to post
Share on other sites

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 кода готовый минимизированный нетлист в требуемом базисе.

Share this post


Link to post
Share on other sites

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

1)Verilog

2)VHDL

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

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

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

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

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

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

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

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

Edited by Flip-fl0p

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

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

 

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

Share this post


Link to post
Share on other sites

Ловите код супер дешифратора на 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

Edited by likeasm

Share this post


Link to post
Share on other sites

Ловите код супер дешифратора на 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:

Share this post


Link to post
Share on other sites

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

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

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

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

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

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...