0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 24
1

Минимизация двоично-десятичного дешифратора на жесткой логике

09.10.2015, 20:59. Показов 3265. Ответов 38
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, Господа. Возник один интересный вопрос по минимизации. На рисунке представлен двоично-десятичный дешифратор с выходом на семисегментник(в будущем на два(но сейчас не суть важно)). Собственно можно ли каким-то образом минимизировать выходы "ИЛИ" сегментов для "A,B,C,D,E,F,G" или они останутся такими же громоздкими? Или есть какие либо иные схемы создания подобного дешифратора.

P.S. Извиняюсь за корявые линии в WorkBench.
Миниатюры
Минимизация двоично-десятичного дешифратора на жесткой логике  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2015, 20:59
Ответы с готовыми решениями:

Иммитация работы двоично-десятичного дешифратора
Немного сомневаюсь,но дешифратор это преобразователь из двоичной системы в десятичную. По идее это...

Нужно табличное задание на булевых функциях преобразования двоично-десятичного кода 8421+3 в двоично-десятичный код 2124
Здравствуйте! Нужно табличное задание на булевых функциях преобразования двоично-десятичного кода...

Получение десятичного значения из двоично-десятичного кода
С клавиатуры ввести символьную строку с 2-10-м кодом целого числа. Вычислить и напечатать...

Помогите собрать схемку на жесткой логике
Всем привет. Нужна ваша помощь, нужно на жесткой логике сделать следующие: на вход подается сигнал...

Сконструируйте машину Тьюринга, которая выступит в качестве двоично- восьмеричного дешифратора
Сконструируйте машину Тьюринга, которая выступит в качестве двоично- восьмеричного дешифратора.

38
75 / 75 / 8
Регистрация: 24.09.2015
Сообщений: 342
09.10.2015, 21:34 2
Терминал, надо написать его на HDL языке и дать компилятуру его оптимизировать. Вы же не собираетесь это реализовывать на рассыпухе?
0
0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 24
09.10.2015, 21:39  [ТС] 3
Была идея собрать на микросхемах, но после того как я собрал это в ВБ, так мне еще один семисегментник надо использовать(он по сути от 0..99 должен дешифрировать и при возникновении 100 блокировать выходы) я подумал что это будет очень накладно. Вот на счет HDL впервые слышу, так как чайник еще.
0
75 / 75 / 8
Регистрация: 24.09.2015
Сообщений: 342
09.10.2015, 21:45 4
В ручную - можно постоить таблицу истинности и использовать метод карт Карно https://ru.wikipedia.org/wiki/... 0%BD%D0%BE
для разложения по базису (OR, NOT) или (AND, NOT). В википедии есть и другие методы минимизации логических операций
1
0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 24
09.10.2015, 21:51  [ТС] 5
А вот про картишки уже слышал и использовал, попробую с помощью них, постараюсь скинуть в скором времени, ибо возможно ошибки и выбор не лучших результатов.
0
75 / 75 / 8
Регистрация: 24.09.2015
Сообщений: 342
09.10.2015, 21:54 6
Терминал, существуют програмируемые логические микросхемы
https://ru.wikipedia.org/wiki/... 0%98%D0%A1
- как раз для реализации подобной логики
0
0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 24
09.10.2015, 21:58  [ТС] 7
Не не не, я еще слишком зеленый, чтобы верилоги учить, надо с логикой разобраться и мк, а дальше уже можно импровизировать, а пока не пойму логику, думаю, плисины в разы сложнее будут без базы.
0
75 / 75 / 8
Регистрация: 24.09.2015
Сообщений: 342
09.10.2015, 22:07 8
Вообще индикаторы обычно подключают без всякой логики
http://www.kernelchip.ru/pcports/PS039.php
Делают так, чтобы в каждый момент времени горел только один из сигментов.

При этом даже экономиться питание, потому что глаз больше реагирует на мгновенную яркость - так что горит светодиод постоянно или вспыхивает раз в 50 секунд, для глаза это будет почти тоже самое.

Есть еще вариант использовать сдвигающие регистры - в которые загружать последовательно код
http://avrproject.ru/publ/kak_... a/2-1-0-57
1
0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 24
09.10.2015, 22:12  [ТС] 9
Спасибо за информацию, я в скором времени займусь подобным, но пока что надо раскурить дешифратор как дешифратор, а не замену ему, так же шифраторы, сумматоры, мультиплексоры и так далее, конкретно разобрать их по отдельности, думаю в будущем это принесет свой вклад в мозг.
0
75 / 75 / 8
Регистрация: 24.09.2015
Сообщений: 342
09.10.2015, 22:15 10
Схемы
Миниатюры
Минимизация двоично-десятичного дешифратора на жесткой логике   Минимизация двоично-десятичного дешифратора на жесткой логике  
0
0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 24
09.10.2015, 22:52  [ТС] 11
Не врубаюсь как работает схема с мк, какие сигналы подаются на вход микросхем с мк и после с выхода микросхемы на вход другой?

Добавлено через 29 минут
И еще один очень волнующий вопрос. Используется два семисегментника один для единиц, другой для десятков. Интервал дешифрирования 0..99 это значит 7 разрядов. Возможно ли на 4 "младших" разряда повесить один дешифратор с семисегментником для единиц, а на 4 "старших" повесить второй такой же для отображения десятков, один разряд у них получится общий(самый средний), возможна ли такая реализация? По логике вещей работать должно, но не знаю на сколько профессионально так реализовывать.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,519
09.10.2015, 23:26 12
Цитата Сообщение от Терминал Посмотреть сообщение
Используется два семисегментника один для единиц, другой для десятков. Интервал дешифрирования 0..99 это значит 7 разрядов. Возможно ли на 4 "младших" разряда повесить один дешифратор с семисегментником для единиц, а на 4 "старших" повесить второй такой же для отображения десятков,
возможно, в 155 серии вроде даже был дешифратор для семисегментника, а может не в 155, давно было не помню

Не по теме:

я в свое время реализовывал на диодной сборке, время было тяжелое:) с микросхемами напряженка
и рассчитывал схему при помощи карт Карно


но я бы смотрел в сторону динамической индикации
ну и главный вопрос откуда сигнал идет, с ПЛИС или с микроконтроллера
если с микроконтроллера, то нафига козе боян, все реализуется программно,отдаешь 9(10)ножек 7(8) на сегменты и два на разряды
1
0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 24
10.10.2015, 00:06  [ТС] 13
Да это понятно с мк то все просто и париться не надо =). Суть, грубо говоря сделать готовый дешифратор (спать), а там уже хоть с чего подавать хоть с мк, хоть со счетчика(делителя частоты или как там его на 7 разрядов). Дело в практике, попрактиковаться хочу в схемотехнике основные уст-ва изучить, как работают, ну и соответственно спасибо за ответы, теперь я знаю и другие реализации =) Кстати на диодах видел дешифратор, жуткая такая матрица из диодиков.

P.S. учат нас просто на кафедре не очень, вот, а самому разобраться хочется, но тяжело это все, тут не один год практики нужен.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,519
10.10.2015, 00:39 14
ну вот например для среднего сегмента
Код
х1 х2 х3 х4 f
0  0   0   0  0
0  0   0   1  0
0  0   1   0  1
0  0   1   1  1
0  1   0   0  1
0  1   0   1  1
0  1   1   0  1
0  1   1   1  0
1  0   0   0  1
1  0   0   1  1
1  0   1   0  x
1  0   1   1  x
1  1   0   0  x
1  1   0   1  x
1  1   1   0  x
1  1   1   1  x
x безразличное состояние

составляем карту
Код
       x2x1  00  01 11 10
x4x3
       00     0    0   1   1
       01     1    1   0   1
       11     1    1   x   x
       10     x    x   x   x

объединяем, тут я для каждой группы свой рисунок сделаю
0 0 1 1
1 1 0 1
1 1 x x
x x x x


итого влияет только x4(для этой группы)

0 0 1 1
1 1 0 1
1 1 x x
x x x x

!x3&x2


0 0 1 1
1 1 0 1
1 1 x x
x x x x

x2&!x1


0 0 1 1
1 1 0 1
1 1 x x
x x x x

x3&!x2

f=x4 | !x3&x2 | x2&!x1 | x3&!x2
вот исходя из этой формулы создавай схему

Добавлено через 3 минуты
Цитата Сообщение от Терминал Посмотреть сообщение
Кстати на диодах видел дешифратор, жуткая такая матрица из диодиков.
а я сделал проще две платы верхняя и нижняя. и между ними диодики, топология получилась не такая сложная, печатки то тогда лаком для ногтей рисовали
1
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
10.10.2015, 08:18 15
http://opencores.org/project,b... ,downloads
Код
// Mapping of segment_o lines to actual segments on the display:
//
//        [0]
//       -----
//      |     |
//   [1]|     |[2]
//      | [3] |
//       -----
//      |     |
//   [4]|     |[5]
//      | [6] |
//       -----  o <-----  decimal point [7]
//
//
//  0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
//  -       -   -       -   -   -   -   -   -       -       -   -  
// | |   |   |   | | | |   |     | | | | | | | |   |     | |   |    
//          -   -   -   -   -       -   -   -   -       -   -   -   
// | |   | |     |   |   | | |   | | |   | | | | | |   | | |   |   
//  -       -   -       -   -       -   -       -   -   -   -      


module led_display_driver (
  clk_i,
  ce_i,
  rst_i,
  data_i,
  point_i,
  digit_on_i,
  segment_o,
  common_o
  );
// Timer defaults set up for 1MHz clock
parameter DIGITS_PP        = 4;     // # of digits in LED display.
parameter DUTY_CYCLE_PP    = 8;     // # of digit timeslots
parameter SEGMENT_DRIVE_PP = 0;     // 0 = sink from segments (Common Anode)
                                    // 1 = source to segments (Common Cathode)
parameter COMMON_DRIVE_PP  = 1;     // 0 = 1 common low, others high
                                    // 1 = 1 common high, others low
parameter DIGIT_TIMEOUT_PP = 512;   // Clock cycles per digit timeslot
parameter DIGIT_TIMER_WIDTH_PP = 9; // Bit width of digit timer
parameter DIGIT_COUNT_WIDTH_PP = 3; // Bit width of digit counter

// I/O declarations
input  clk_i;                      // clock signal
input  ce_i;                       // clock enable input
input  rst_i;                      // synchronous reset
input  [4*DIGITS_PP-1:0] data_i;   // data input bus
input  [DIGITS_PP-1:0] point_i;    // Decimal point input bus
input  [DIGITS_PP-1:0] digit_on_i; // Polarity of common_o...
output [7:0] segment_o;            // (includes decimal point segment)
output [DIGITS_PP-1:0] common_o;   // One output per display digit...


// Internal signal declarations

reg [DIGIT_TIMER_WIDTH_PP-1:0] digit_timer;
reg [DIGIT_COUNT_WIDTH_PP-1:0] digit_count;

wire digit_clk_en;
wire [3:0] hex_digit;
reg  [6:0] number_segments;
wire decimal_point;

//--------------------------------------------------------------------------
// Module code


//----------MUX part-----------------------------------

assign hex_digit = data_i >> {digit_count,2'b0};
assign decimal_point = point_i >> digit_count;


// Digit timer
always @(posedge clk_i)
begin
  if (rst_i) digit_timer <= 0;  // Synchronous reset
  else if (ce_i)
  begin
    if (digit_timer == DIGIT_TIMEOUT_PP-1) digit_timer <=0;
    else digit_timer <= digit_timer + 1;
  end
end
assign digit_clk_en = (digit_timer == DIGIT_TIMEOUT_PP-1) && ce_i;

// Digit counter
always @(posedge clk_i)
begin
  if (rst_i) digit_count <=0;  // Synchronous reset
  else if (digit_clk_en)
  begin
    if (digit_count == DUTY_CYCLE_PP-1) digit_count <= 0;
    else digit_count <= digit_count + 1;
  end
end

// Create common_o outputs
// One high... then selectively invert.
assign common_o = (COMMON_DRIVE_PP==1'b1)?
                     ((1'b1 << digit_count) & digit_on_i):
                    ~((1'b1 << digit_count) & digit_on_i);

// Create segment outputs
always @(hex_digit)
begin
  case(hex_digit)
    4'h0 : number_segments <= 7'b1110111;
    4'h1 : number_segments <= 7'b0100100;
    4'h2 : number_segments <= 7'b1011101;
    4'h3 : number_segments <= 7'b1101101;
    4'h4 : number_segments <= 7'b0101110;
    4'h5 : number_segments <= 7'b1101011;
    4'h6 : number_segments <= 7'b1111011;
    4'h7 : number_segments <= 7'b0100101;
    4'h8 : number_segments <= 7'b1111111;
    4'h9 : number_segments <= 7'b1101111;
    4'hA : number_segments <= 7'b0111111;
    4'hB : number_segments <= 7'b1111010;
    4'hC : number_segments <= 7'b1010011;
    4'hD : number_segments <= 7'b1111100;
    4'hE : number_segments <= 7'b1011011;
    4'hF : number_segments <= 7'b0011011;
  endcase
end

// Assign final polarity adjusted segment outputs
assign segment_o = (SEGMENT_DRIVE_PP==1'b1)? {decimal_point,number_segments}:
                                            ~{decimal_point,number_segments};

endmodule
1
28 / 28 / 5
Регистрация: 23.04.2014
Сообщений: 130
10.10.2015, 11:37 16
Ошибся) убрал неправильный текст
0
0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 24
10.10.2015, 19:04  [ТС] 17
Если я понял Вас, то для сегмента А, будет выглядеть следующим образом:
Миниатюры
Минимизация двоично-десятичного дешифратора на жесткой логике  
0
0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 24
10.10.2015, 19:06  [ТС] 18
О, класс спасибо. Это на верилоге написано?

Добавлено через 1 минуту
Я представляю как это выглядело, я кстати пытался лутовать, но еще пока не получилось не разу, но я в общем маркером дорожки по линейке рисовал, получилось в принципе не плохо, но я передержал в хлорном железе и они сильно протравились
0
0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 24
10.10.2015, 19:40  [ТС] 19
Для C и B. Вот на счет них не знаю особенно сегмент С, в нем можно по другом области выделить
Миниатюры
Минимизация двоично-десятичного дешифратора на жесткой логике  
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,519
13.10.2015, 23:48 20
Терминал, x это безразличное состояние такой ситуации никогда не будет поэтому можешь принимать его и за 0 и за 1
можешь смело объединять с 1 главное чтобы блок был степень 2, посмотри как я объединял
например для сегмента b можешь объединить первую и последнюю строчку и будет !x2
а так же полностью объединить первый столбец
(вот написал бы свое решение здесь, а не на листочке я бы поправил)
и иногда лучше решать не по единицам а по нулям, объединять 0 т.е не зажигать сегмент а гасить
0
13.10.2015, 23:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.10.2015, 23:48
Помогаю со студенческими работами здесь

Построить машину Тьюринга, которая выступит в качестве двоично- восьмеричного дешифратора
народ, пожалуйста помогите. очень срочно нужно решение.. Сконструируйте машину Тьюринга, которая...

Сконструируйте машину Тьюринга, которая выступит в качестве двоично- восьмеричного дешифратора
Сконструируйте машину Тьюринга, которая выступит в качестве двоично- восьмеричного дешифратора

Разность двоично-десятичного кода
Объясните пж как происходит межтетрадный займ в двоично-десятичной системе при вычитании на примере...

Преобразование двоично-десятичного кода в двоичный
есть код, выполняющий преобразование двоичных чисел в двоично десятичные, можно на примере этого...

Перевод числа из двоично-десятичного в десятичное
Помогите! Нужна программа перевода числа из двоично-десятичного в десятичное


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru