|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 8:12 am
|
Страница 1 от 1
|
[ 13 мнения ] |
|
| Автор |
Съобщение |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
 Задача за интервю
Новата задача тип Интервю на "Adventures in ASIC Digital Design"
http://asicdigitaldesign.wordpress.com/
"Design a circuit with minimum logic that receives a single digit, coded BCD (4 wires) and as an output gives you the result multiplied by 5 - also BCD coded (8 wires)."
Предложете схемно решение с минимално количество логика на следния проблем. На входа получавате единична BCD кодирана цифра (4 bits), която следва да бьде умножена по 5 и предадена на изхода в BCD формат (8 bits).
Пример:
input=5 (0101) => output=25 (0010 0101)
Сьветвам ви, преди да погледнете решенията на страницата, да опитате сами. Сред предложените отговори има особенно интересен подход.
|
| Пет Яну 09, 2009 3:29 pm |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
старшите три бита стават на десетици а младшия бит се цепва на две и отива на бит 0 и бит 2. нула елемента логика 
|
| Пет Яну 09, 2009 3:42 pm |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
Така е, но по кой метод стигна до извода?
Разпозна визуално структурата в таблицата или използва друг подход.
Сред предложените решения има едно особено интересно
|
| Пет Яну 09, 2009 4:27 pm |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
ами по кой метод, за такива неща метод няма. първо се пробвах конвенционално, със едно шифтване и сумиране и няква десетична корекция, после видях че няма да стане и викам я да видим в десетична система директно.
|
| Пет Яну 09, 2009 4:46 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Умноженията по число, което е основа или степен на основата на бройната система, не изисква логически схеми. В случая на BCD основата е 10, а не 2, така че на 5 се умножава без логика.
|
| Пет Яну 09, 2009 5:09 pm |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
Получи се наистина интересно
@Zaphod като "софтуерист" търси подходяш алгоритъм за решението на проблема, чрез сумиране и десетична корекция.
Аз изобразих функцията таблично за да разпозная pattern-а ако има такьв, ако не щях да я развия директно с помощта на Karnaugh map или по Quine-McCluskey.
@bateAz използва формален подход, характерно за един системен архитект.
Още идеи?
Всяка една от споменатите техники е в състояние да ни отведе до оптимално или близко до оптималното решение.
Всеки един от нас е трьгнал по различен път, макар и да е способен да разпознае останалите щом ги види.
Хареса ми идеяата на автора. Независимо от това, с какво знание/инструменти разполагаме понякога е трудно да надскочим ограниченията, които сами си налагаме. Добре е когато човек разширява крьгозора си. Hе само в личен план, но и в професионален. За нас като инженери и програмисти е особено важно да умеем да подхождаме по различен начин кьм проблемите с които се борим. Това като малко лирично отклонение.
|
| Пет Яну 09, 2009 7:02 pm |
|
 |
|
ДедоБоре
Ранг: Форумен бог
Регистриран на: Нед Ное 21, 2004 11:31 pm Мнения: 10088
|
не е добре. много е добре 
|
| Пет Яну 09, 2009 7:19 pm |
|
 |
|
ps66
Ранг: Форумен бог
Регистриран на: Пет Яну 19, 2007 9:16 am Мнения: 1063 Местоположение: путинофили: "иди н***й"
|
x*5 == (x*10) / 2
0 0 0 0 b3 b2 b1 b0 * 5 == (b3 b2 b1 b0 0 0 0 0)/2 == 0 b3 b2 b1 0 b0 0 b0
(при деление на 2 на десетиците остатъка е 0 или 5 според b0 ... затова е 0 b0 0 b0)
|
| Пет Яну 09, 2009 7:23 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Ами както батето каза няма нужда от логика, бит нула и две от единиците на резултата се мапват към бит 0 на входа, и съответно бит 0 = бит 1, бит 1 = бит 2, бит 3 = бит 4, бит 5= 0 за резултата, съответно свързан към входа.
|
| Пет Яну 09, 2009 8:21 pm |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
сега да пусна заядливостта си в действие
всичко това е много благородно (чии лаф е това?), но 5 не е степен на десятката. степените на десятката са 0.01, 0.1,1,10,100.. между тях не виждам 5.
и за да не каже някой "е се тая, степен или кратно", то да отбележа че същата задача приложена не към двоично десетичен код, а към троично десетичен, няма да може да се реши по тоя хитър начин.
|
| Пет Яну 09, 2009 8:39 pm |
|
 |
|
ps66
Ранг: Форумен бог
Регистриран на: Пет Яну 19, 2007 9:16 am Мнения: 1063 Местоположение: путинофили: "иди н***й"
|
обаче за всяка бройна система с база B (ЧЕТНО), решението е подобно (ако е умножава по B/2) !
|
| Пет Яну 09, 2009 9:22 pm |
|
 |
|
tgi
Ранг: Форумен бог
Регистриран на: Нед Юни 10, 2007 2:22 pm Мнения: 6492 Местоположение: София
|
Пет наистина не е степен на 10, и бит 0 не може да се "цепне" на две....
Май не видях много работещи решения дотук  .
А е елементарно - старшите 4 бита на резултата са входното число >>1 (*10/2, инак казано горните 3 бита
на входното число - това вече доста го направиха), младшите 4 бита са '5 AND [бит 0 на входното число]'
(т.е. 0 или 5)....
[edit] За по-ясно:
q7=0
q6=i3
q5=i2
q4=i1
*
q3=0
q2=i0
q1=0
q0=i0
Само жици.... никакъв силиций  .
[/edit]
_________________------------------- www.tgi-sci.com------------------- http://www.flickr.com/photos/didi_tgi/
|
| Съб Яну 10, 2009 4:15 am |
|
 |
|
ps66
Ранг: Форумен бог
Регистриран на: Пет Яну 19, 2007 9:16 am Мнения: 1063 Местоположение: путинофили: "иди н***й"
|
 |  |  |  | tgi написа: Пет наистина не е степен на 10, и бит 0 не може да се "цепне" на две.... Май не видях много работещи решения дотук  . А е елементарно - старшите 4 бита на резултата са входното число >>1 (*10/2, инак казано горните 3 бита на входното число - това вече доста го направиха), младшите 4 бита са '5 AND [бит 0 на входното число]' (т.е. 0 или 5).... ... |  |  |  |  |
спИцЯлно (мнооого бавно) за @tgi : при делението на 2 (повтарям ДВЕ и няма да повтарям  ) на число кратно на 10 ... последната му цифра е 0 или 5 и зависи от това дали е четно/нечетно (разряда на десетицата) ... в нашия случй четността зависи от b0 (по моя пример) така за младшата цифра остава: if (b0) =5 else =0 или (b0) ? 5 : 0; или (класиката) (b0 *5) което логично "навява" на (имаме бит b0 по числото 0101): 0 b0 0 b0 по надолу @tgi може и да не чете! самоцитирам се:
за всяка бройна система с база B (ЧЕТНО и НЕ-ПРОСТО) (4, 6, .. 10, ... 16) горната задачa (x*B/2) има подобно решение
(при B=10 е задачата на темата)
и то е:
0 b3 b2 b1 x x x x
където: x x x x , e B/2 като всяка негова 1-ца е заместена с b0 (от побитовато умнoжение b0*B/2 !)
решението е просто, ... защото младшия разряд може да заема само 2 стойности 0 и B/2, което позволява да се избегне каквато и да е логика!

|
| Съб Яну 10, 2009 9:15 am |
|
|
|
Страница 1 от 1
|
[ 13 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 3 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|