dimamukhin97 0 19 марта, 2017 Опубликовано 19 марта, 2017 · Жалоба Нужно реализовать одноразрядный мультиплексор 8-в-1 со входом разрешения работы EN. Активный уровень сигнала EN – логический «0». При подаче на вход EN сигнала с уровнем логической «1», выходной сигнал мультиплексора должен устанавливаться в высокоимпедансное состояние. Вот, что у меня получилось: module multiplexor(A, B, C, D0, D1, D2, D3, D4, D5, D6, D7, Q); input A, B, C, D0, D1, D2, D3, D4, D5, D6, D7; output Q; assign Q = ((D0&~A&~B&~C)|(D1&A&~B&~C)|(D2&~A&B&~C)|(D3&~A&~B&C)|(D4&A&B&~C)| (D5&~A&B&C)|(D6&A&~B&C)|(D7&A&B&C|)|(~EN); endmodule Подскажите, пожалуйста, как дополнить код, чтобы при EN = 1 выход устанавливался бы в высокоимпендансное состояние Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 19 марта, 2017 Опубликовано 19 марта, 2017 · Жалоба Нужно реализовать одноразрядный мультиплексор 8-в-1 со входом разрешения работы EN. Активный уровень сигнала EN – логический «0». При подаче на вход EN сигнала с уровнем логической «1», выходной сигнал мультиплексора должен устанавливаться в высокоимпедансное состояние. Вот, что у меня получилось: module multiplexor(A, B, C, D0, D1, D2, D3, D4, D5, D6, D7, Q); input A, B, C, D0, D1, D2, D3, D4, D5, D6, D7; output Q; assign Q = ((D0&~A&~B&~C)|(D1&A&~B&~C)|(D2&~A&B&~C)|(D3&~A&~B&C)|(D4&A&B&~C)| (D5&~A&B&C)|(D6&A&~B&C)|(D7&A&B&C|)|(~EN); endmodule Подскажите, пожалуйста, как дополнить код, чтобы при EN = 1 выход устанавливался бы в высокоимпендансное состояние Если выходы мультиплексора не выходят из микросхемы наружу, то задача о 3-м состоянии поставлена неправильно. Внутри ПЛИС 3-е состояние не работает... А вообще добавьте к выходам трехстабильный буфер и напишите, что при EN == 1 выход будет в Z... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 19 марта, 2017 Опубликовано 19 марта, 2017 · Жалоба Приветствую! Нужно реализовать одноразрядный мультиплексор 8-в-1 со входом разрешения работы EN. Активный уровень сигнала EN – логический «0». При подаче на вход EN сигнала с уровнем логической «1», выходной сигнал мультиплексора должен устанавливаться в высокоимпедансное состояние. Вот, что у меня получилось: assign Q = ((D0&~A&~B&~C)|(D1&A&~B&~C)|(D2&~A&B&~C)|(D3&~A&~B&C)|(D4&A&B&~C)| (D5&~A&B&C)|(D6&A&~B&C)|(D7&A&B&C|)|(~EN); ... Подскажите, пожалуйста, как дополнить код, чтобы при EN = 1 выход устанавливался бы в высокоимпендансное состояние Похвальное трудолюбие! Но если надо сделать мультиплексор на 128 входов? module mux (sel, din, dou); input wire en; input wire [2:0] sel; input wire [7:0] D; output wire Q; assign Q= (en==1'b0) ? D[sel] : 1'bz; Но если препод требует чтобы порты обязательно были A,B,C... то ... wire [7:0] din_i; wire [2:0] sel_i; assign din_i={D7,D6,D5,D4,D3,D2,D1,D0}; assign sel_i={C,B,A}; assign Q= (en==1'b0) ? din_i[sel_i] : 1'bz; ... Но тогда он может заподозрить неладное и готовьтесь что придется объяснять что за магия со скобками. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimamukhin97 0 22 марта, 2017 Опубликовано 22 марта, 2017 · Жалоба Огромное спасибо, Rob! Во всём разобрался, дополнил код, проверил на ModelSim, всё работает, как надо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RHCP2 0 9 июля, 2020 Опубликовано 9 июля, 2020 · Жалоба 20.03.2017 в 00:10, iosifk сказал: Если выходы мультиплексора не выходят из микросхемы наружу, то задача о 3-м состоянии поставлена неправильно. Внутри ПЛИС 3-е состояние не работает... А вообще добавьте к выходам трехстабильный буфер и напишите, что при EN == 1 выход будет в Z... Доброго времени суток! Можете подробнее описать что и как работает? Мне нужно разобраться в этой теме как можно скорее, а я пока никак не могу вникнуть. module mux (sel, din, dou); input wire en; input wire [2:0] sel; input wire [7:0] D; output wire Q; assign Q= (en==1'b0) ? D[sel] : 1'bz; зачем нам din и dou если мы их дальше не используем? Разве на их местете не должно быть mux(sel, D, Q)? Что делать, если разрешение En отрицательное? и что означает каждый символ в последней строчке?: assign Q= (en==1'b0) ? D[sel] : 1'bz; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 9 июля, 2020 Опубликовано 9 июля, 2020 · Жалоба Приветствую! 48 minutes ago, RHCP2 said: Доброго времени суток! Можете подробнее описать что и как работает? Мне нужно разобраться в этой теме как можно скорее, а я пока никак не могу вникнуть. ... зачем нам din и dou если мы их дальше не используем? Это просто ошибка copy/paste должно быть: module mux (en, sel, din, dou); input wire en; input wire [2:0] sel; input wire [7:0] din; output wire dou; assign dou = (en==1'b0) ? din[sel] : 1'bz; endmodule 48 minutes ago, RHCP2 said: ... Разве на их местете не должно быть mux(sel, D, Q)? На каком месте? 48 minutes ago, RHCP2 said: и что означает каждый символ в последней строчке? assign Q= (en==1'b0) ? D[sel] : 1'bz; Ох, хорошо что это не VHDL, ладно по порядку:assign - символ английского (это важно!) алфавита А assign - два подряд идущие символа S, assign - как не странно это символ I ... На самом деле строка assign dou = (en==1'b0) ? din[sel] : 1'bz; состоит из 2 последовательных mux - mux_8to1: ( tmp = din[sel] ) и mux_2to1: dou = (sel==0) ? tmp : 1'bz; 48 minutes ago, RHCP2 said: Что делать, если разрешение En отрицательное? Это как отрицательное ? равное -1, -1000? Хотя в записи условия выбора (var==value) ? ... : ... ; вы можете сравнивать var с любым значением value. Удачи! Роб. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RHCP2 0 10 июля, 2020 Опубликовано 10 июля, 2020 · Жалоба 7 часов назад, RobFPGA сказал: Приветствую! Это просто ошибка copy/paste должно быть: module mux (en, sel, din, dou); input wire en; input wire [2:0] sel; input wire [7:0] din; output wire dou; assign dou = (en==1'b0) ? din[sel] : 1'bz; endmodule На каком месте? Ох, хорошо что это не VHDL, ладно по порядку:assign - символ английского (это важно!) алфавита А assign - два подряд идущие символа S, assign - как не странно это символ I ... На самом деле строка assign dou = (en==1'b0) ? din[sel] : 1'bz; состоит из 2 последовательных mux - mux_8to1: ( tmp = din[sel] ) и mux_2to1: dou = (sel==0) ? tmp : 1'bz; Это как отрицательное ? равное -1, -1000? Хотя в записи условия выбора (var==value) ? ... : ... ; вы можете сравнивать var с любым значением value. Удачи! Роб. Доброе утро! Под символами я имел ввиду что например значит 1'bz и откуда взяли z xD, а так же какую роль выполняет "?" и ":". Насчет отрицательного En могу лишь сказать, что ТЗ задано следующим образом (Вариант 6), и да, там ошибка в Х должно быть (3...0), а в У 6*(3...0) естественно: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 10 июля, 2020 Опубликовано 10 июля, 2020 · Жалоба 56 minutes ago, RHCP2 said: Такое ощущение, что в вариантах 6 и 7 терминология перепутана. У мультиплексора входы должны быть 6*[3..0], а не выходы. А у демультиплексора наоборот. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RHCP2 0 10 июля, 2020 Опубликовано 10 июля, 2020 · Жалоба 11 минут назад, dimka76 сказал: Такое ощущение, что в вариантах 6 и 7 терминология перепутана. У мультиплексора входы должны быть 6*[3..0], а не выходы. А у демультиплексора наоборот. Так и есть, я об этом написал(конкретно про вариант 6) :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 10 июля, 2020 Опубликовано 10 июля, 2020 · Жалоба Приветствую! 3 hours ago, RHCP2 said: Доброе утро! Под символами я имел ввиду что например значит 1'bz и откуда взяли z xD, а так же какую роль выполняет "?" и ":". Правильно заданный вопрос это половина ответа! Боюсь спросить - это у вас задание на выпускные экзамены или (все же надеюсь) что вступительные ? 1'bz - (читается как один бZик ) обозначает что выход с данным уровнем считается переведенным в 3-тье состояние - не 0 и не 1, а высокоомное, фактически отключен от остальной части схемы. Бывает еще 1'bx - (что за Херня ) обозначающая что вход никуда не подключен, а на выход попадает непонятно что. При этом запись 1'b.. говорит что назначается сигнал шириной в 1 бит. Как интерпретировать + - в таблице это все же надо спросить препода который вам такую табличку дал. Может он специально это сделал и ждет хитрец кто из сознательных студентов и за сколько часов до экзамена задаст вопросы по этой непонятке Он же (хитрец) должен был рассказать как работает тернарный оператор ? : Но с этим легче - на крайний случай можно за 5 мин и в интернете найти что это такое. Удачи! Rob. P.S. термины в скобка помеченные знаком необязательны к запоминанию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RHCP2 0 10 июля, 2020 Опубликовано 10 июля, 2020 · Жалоба 34 минуты назад, RobFPGA сказал: Приветствую! Правильно заданный вопрос это половина ответа! Боюсь спросить - это у вас задание на выпускные экзамены или (все же надеюсь) что вступительные ? Это у нас задание на практику, то есть мы должны все самостоятельно изучить без объяснений - по книжечке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 10 июля, 2020 Опубликовано 10 июля, 2020 · Жалоба Приветствую! 41 minutes ago, RHCP2 said: Это у нас задание на практику, то есть мы должны все самостоятельно изучить без объяснений - по книжечке. Понятно, то есть книжечка все же у вас есть. А что за книжечка? Читали? И что не поняли? Удачи! Rob. P.S. А хитрец препод мониторит небось форум и смотрит кто и как "самостоятельно" изучает предмет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sorok-odin 5 10 июля, 2020 Опубликовано 10 июля, 2020 · Жалоба 7 часов назад, RobFPGA сказал: P.S. А хитрец препод мониторит небось форум и смотрит кто и как "самостоятельно" изучает предмет И ставит себе пометки в блокнотик, что студентам надо разжевывать всё-всё-всё. И вместо непонятных "+" и "-" надо писать "такой вход должен быть" и "такого входа делать не надо". Или "активный уровень высокий" и "активный уровень низкий". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 10 июля, 2020 Опубликовано 10 июля, 2020 · Жалоба Приветствую! 1 minute ago, sorok-odin said: И ставит себе пометки в блокнотик, что студентам надо разжевывать всё-всё-всё Если все разжевывать то у студентов повыпадают все "зубы" к выпуску. Студентов надо учить как грызть гранит науки. А для этого препод тоже должен быть с "зубами". Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
misyachniy 0 24 июля, 2020 Опубликовано 24 июля, 2020 · Жалоба On 7/10/2020 at 1:19 AM, RobFPGA said: Это как отрицательное ? равное -1, -1000? Хотя в записи условия выбора (var==value) ? ... : ... ; вы можете сравнивать var с любым значением value. Очевидно имеется ввиду положительная/отрицательная логика http://elektro-dox.ru/cif-electr/21.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться