_alex__ 0 February 28, 2017 Posted February 28, 2017 · Report post Нужно написать задание в формате и 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 Quote Share this post Link to post Share on other sites More sharing options...
Maverick_ 17 February 28, 2017 Posted February 28, 2017 · Report post Нужно написать задание в формате и 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 проектов. Quote Share this post Link to post Share on other sites More sharing options...
Flip-fl0p 4 March 1, 2017 Posted March 1, 2017 (edited) · Report post 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 March 1, 2017 by Flip-fl0p Quote Share this post Link to post Share on other sites More sharing options...
_alex__ 0 March 1, 2017 Posted March 1, 2017 · Report post Надо при помощи элементов И-НЕ в VHDL/VERILOG описать схему дешифратора ? Допустим я на VHDL/VERILOG опишу элемент И-НЕ, а сам опишу сам дешифратор опишу в схемном редакторе, это подойдет ? Да и минимизация - это очень спорный вопрос, не факт что минимизация при помощи карт Карно-Вейча, с последующим переносом схемы на VHDL даст результат лучше, чем явное поведенческое описание на языке VHDL/VERILOG. Попробуйте при помощи карт Карно-Вейча получить уравнения описывающие поведение выходов в базисе И-НЕ и потом просто описать все 32 вывода вручную. Как при помощи карт Карно описать дешифратор можно глянуть тут: http://gorgeous-karnaugh.com/ru/uchebnik/p...-4-decoder.html мне нужно разобраться как на языках: 1)Verilog 2)VHDL составить задание для САПР на синтез и минимизацию такого устройства в базисе И-НЕ. Т.е. результатом синтеза должна быть минимизированная схема устройства, состоящая из логических элементов И-НЕ. Quote Share this post Link to post Share on other sites More sharing options...
Lerk 0 March 1, 2017 Posted March 1, 2017 · Report post 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 кода готовый минимизированный нетлист в требуемом базисе. Quote Share this post Link to post Share on other sites More sharing options...
Flip-fl0p 4 March 1, 2017 Posted March 1, 2017 (edited) · Report post мне нужно разобраться как на языках: 1)Verilog 2)VHDL составить задание для САПР на синтез и минимизацию такого устройства в базисе И-НЕ. Т.е. результатом синтеза должна быть минимизированная схема устройства, состоящая из логических элементов И-НЕ. 1. Какой САПР имел ввиду преподаватель ? 2. Что значит составить задание для САПР ? 3. Какой критерий минимизации ? Если говорить про FPGA (во всяком случае я думаю, что Вы имеете ввиду именно FPGA\CPLD,поскольку тему создали в соответствующем подразделе форума), то САПР для работы с ними навряд ли сможет выполнить Вашу задачу, поскольку задача САПР синтезировать и разместить Ваше текстовое описание в логические ячейки (это если очень упрощённо говорить). Про устройство ПЛИС почитайте к примеру вот тут: https://marsohod.org/11-blog/265-fpga Таким образом заставить САПР создать текстовое описание схемы в виде базиса Шеффера невозможно, поскольку как такового внутри ПЛИС этого базиса нет, а внутри ПЛИС есть универсальные ячейки, которые могут быть сконфигурированы на выполнение определенных функций. Тут скорее Вам надо найти программу, которая по описанию на VHDL/Verilog строит схему в базисе Шеффера. Есть ли такие программы - это уже другой вопрос. Пример текстового описания дешифратора на языке VHDL в данной теме приведён в 2 разных вариантах. Edited March 1, 2017 by Flip-fl0p Quote Share this post Link to post Share on other sites More sharing options...
andrew_b 23 March 1, 2017 Posted March 1, 2017 · Report post Т.е. результатом синтеза должна быть минимизированная схема устройства, состоящая из логических элементов И-НЕ. Это какой же САПР так делает? Синтезатор раскладывает схему в тот базис, который есть в целевой плисине, а там далеко не И-НЕ. Quote Share this post Link to post Share on other sites More sharing options...
Maverick_ 17 March 1, 2017 Posted March 1, 2017 · Report post так минимизацию делает уже сам САПР для ПЛИС, Вы описываете как я Вам показал. Все остальное САПР сделает сам. Результат Вы можете посмотреть через указанную утилиту. Quote Share this post Link to post Share on other sites More sharing options...
_alex__ 0 March 1, 2017 Posted March 1, 2017 · Report post мне нужно спроектировать и минимизировать такое устройство в базисе И-НЕ без привязки к какой либо ПЛИС. программа modelsim от mentor умеет такое делать? Quote Share this post Link to post Share on other sites More sharing options...
Tausinov 0 March 1, 2017 Posted March 1, 2017 · Report post мне нужно спроектировать и минимизировать такое устройство в базисе И-НЕ без привязки к какой либо ПЛИС. программа modelsim от mentor умеет такое делать? ModelSim - симулятор, там вы сможете только сравнить результат работы вашей схемы с эталонной таблицей истинности. К вопросу о минимизации - это придется делать ручками или какой-то специальной программой, в современных ПЛИС вся логика реализуется на LUT, т.о. ни о каком базисе тут речь уже не идет. В целом задача довольно тривиальная - рисуем карту Карно, получаем схему колдуем, переводя ее в нужный базис, кодируем и проверяем работу. Quote Share this post Link to post Share on other sites More sharing options...
Flip-fl0p 4 March 2, 2017 Posted March 2, 2017 · Report post мне нужно спроектировать и минимизировать такое устройство в базисе И-НЕ без привязки к какой либо ПЛИС. программа modelsim от mentor умеет такое делать? Так проектируйте. Карты Карно Вам в помощь. Ссылку на пример, как это можно делать я Вам давал. Вы точно правильно поняли задание ? Очень странно, что преподаватель сказал делать именно так : по VHDL\Verilog описанию получить минимизированную(скорее всего по количеству лог. элементов, поскольку это классика) схему в базисе Шеффера. Мне кажется надо делать наоборот. Полученную схему в базисе Шеффера перевести в HDL - тогда задание логичное и понятное поскольку надо будет: 1. Нарисовать таблицу истиности. 2. Нарисовать карты Карно. 3. При помощи карт Карно получить минимизированные функции. 4. Перевести их в базис Шеффера. 5. Нарисовать общую схему устройства. 6. Описать полученную схему на языках HDL. Описанные пункты - это классика в обучении студентов. Quote Share this post Link to post Share on other sites More sharing options...
likeasm 0 March 2, 2017 Posted March 2, 2017 (edited) · Report post Ловите код супер дешифратора на 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 March 2, 2017 by likeasm Quote Share this post Link to post Share on other sites More sharing options...
Flip-fl0p 4 March 2, 2017 Posted March 2, 2017 · Report post Ловите код супер дешифратора на 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: Quote Share this post Link to post Share on other sites More sharing options...
likeasm 0 March 2, 2017 Posted March 2, 2017 · Report post Это был сарказм :bb-offtopic: Quote Share this post Link to post Share on other sites More sharing options...
_alex__ 0 March 2, 2017 Posted March 2, 2017 · Report post здесь привели программу gorgeous-karnaugh.com которая именно минимизацией занимается. а какие еще существуют программы именно для минимизации логических функций в опредленном базисе? в matlab такое возможно? Quote Share this post Link to post Share on other sites More sharing options...