С Новым годом! Форум программистов, компьютерный форум, киберфорум
Программируемая логика: ПЛИС, ПАИС
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 24

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

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

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

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

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

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

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

38
 Аватар для Papayaved
75 / 75 / 8
Регистрация: 24.09.2015
Сообщений: 342
09.10.2015, 21:34
Терминал, надо написать его на HDL языке и дать компилятуру его оптимизировать. Вы же не собираетесь это реализовывать на рассыпухе?
0
0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 24
09.10.2015, 21:39  [ТС]
Была идея собрать на микросхемах, но после того как я собрал это в ВБ, так мне еще один семисегментник надо использовать(он по сути от 0..99 должен дешифрировать и при возникновении 100 блокировать выходы) я подумал что это будет очень накладно. Вот на счет HDL впервые слышу, так как чайник еще.
0
 Аватар для Papayaved
75 / 75 / 8
Регистрация: 24.09.2015
Сообщений: 342
09.10.2015, 21:45
В ручную - можно постоить таблицу истинности и использовать метод карт Карно 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  [ТС]
А вот про картишки уже слышал и использовал, попробую с помощью них, постараюсь скинуть в скором времени, ибо возможно ошибки и выбор не лучших результатов.
0
 Аватар для Papayaved
75 / 75 / 8
Регистрация: 24.09.2015
Сообщений: 342
09.10.2015, 21:54
Терминал, существуют програмируемые логические микросхемы
https://ru.wikipedia.org/wiki/... 0%98%D0%A1
- как раз для реализации подобной логики
0
0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 24
09.10.2015, 21:58  [ТС]
Не не не, я еще слишком зеленый, чтобы верилоги учить, надо с логикой разобраться и мк, а дальше уже можно импровизировать, а пока не пойму логику, думаю, плисины в разы сложнее будут без базы.
0
 Аватар для Papayaved
75 / 75 / 8
Регистрация: 24.09.2015
Сообщений: 342
09.10.2015, 22:07
Вообще индикаторы обычно подключают без всякой логики
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  [ТС]
Спасибо за информацию, я в скором времени займусь подобным, но пока что надо раскурить дешифратор как дешифратор, а не замену ему, так же шифраторы, сумматоры, мультиплексоры и так далее, конкретно разобрать их по отдельности, думаю в будущем это принесет свой вклад в мозг.
0
 Аватар для Papayaved
75 / 75 / 8
Регистрация: 24.09.2015
Сообщений: 342
09.10.2015, 22:15
Схемы
Миниатюры
Минимизация двоично-десятичного дешифратора на жесткой логике   Минимизация двоично-десятичного дешифратора на жесткой логике  
0
0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 24
09.10.2015, 22:52  [ТС]
Не врубаюсь как работает схема с мк, какие сигналы подаются на вход микросхем с мк и после с выхода микросхемы на вход другой?

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

Не по теме:

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


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

P.S. учат нас просто на кафедре не очень, вот, а самому разобраться хочется, но тяжело это все, тут не один год практики нужен.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
10.10.2015, 00:39
ну вот например для среднего сегмента
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
х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 безразличное состояние

составляем карту
Code
1
2
3
4
5
6
       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
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
10.10.2015, 08:18
http://opencores.org/project,b... ,downloads
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// 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
Ошибся) убрал неправильный текст
0
0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 24
10.10.2015, 19:04  [ТС]
Если я понял Вас, то для сегмента А, будет выглядеть следующим образом:
Миниатюры
Минимизация двоично-десятичного дешифратора на жесткой логике  
0
0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 24
10.10.2015, 19:06  [ТС]
О, класс спасибо. Это на верилоге написано?

Добавлено через 1 минуту
Я представляю как это выглядело, я кстати пытался лутовать, но еще пока не получилось не разу, но я в общем маркером дорожки по линейке рисовал, получилось в принципе не плохо, но я передержал в хлорном железе и они сильно протравились
0
0 / 0 / 0
Регистрация: 05.10.2015
Сообщений: 24
10.10.2015, 19:40  [ТС]
Для C и B. Вот на счет них не знаю особенно сегмент С, в нем можно по другом области выделить
Миниатюры
Минимизация двоично-десятичного дешифратора на жесткой логике  
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
13.10.2015, 23:48
Терминал, x это безразличное состояние такой ситуации никогда не будет поэтому можешь принимать его и за 0 и за 1
можешь смело объединять с 1 главное чтобы блок был степень 2, посмотри как я объединял
например для сегмента b можешь объединить первую и последнюю строчку и будет !x2
а так же полностью объединить первый столбец
(вот написал бы свое решение здесь, а не на листочке я бы поправил)
и иногда лучше решать не по единицам а по нулям, объединять 0 т.е не зажигать сегмент а гасить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.10.2015, 23:48
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru