|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
И всё-таки: AY на рассыпухе;)
Author |
Message |
Shiru Otaku
Doomed
Joined: 16 Mar 2002 17:00 Posts: 490
|
Всё-же не даёт покоя мне эта идея. Практической пользы в ней никакой, однако интересно в деталях представить себе, как это могло выглядеть (то, о чём ходили слухи). Да и буржуи делают-же подобное - чем мы хуже?
Разумеется, я не предлагаю кому-то срочно всё бросить, и придумать мне схему. Напротив, я хочу придумать её сам (благо, эмулятор AY давным-давно делал, и знаю, как он работает). Это будет мне полезно главным образом в плане получения знаний в области проектирования логических схем. Данная конструкция прикидывается на 155/555 серии, по прикидкам получится не меньше 50 корпусов.
Для начала я набросал только небольшую часть схемы - пред-делитель и один тональный канал (программируемый делитель). Прошу специалистов объяснить мне, почему он не будет работать (в том, что работать он не будет, я практически уверен) ;)
Вот схема:
Теперь объяснения, что она должна делать, по моей задумке.
На вход ИЕ5 идёт тактовая частота чипа, этот счётчик является пред-делителем (для разных блоков AY требуются разные коэффициенты деления входной частоты, на 2, 4, ..).
Всё остальное - это блок делителя частоты одного тонального канала, вместе с его регистрами. Пока я не предусматриваю возможности чтения из регистров, т.к. не очень понимаю, как это сделать (ставить ещё два регистра, входы которых соединить с выходами имеющихся, выходы с входами, но разрешать эти выходы только по RD?). Два регистра содержат 12-битное число. Записываться оно в них будет через схему внешнего интерфейса, которой пока нет (предполагается, что она будет выдавать уровень на вход C нужного регистра, номер которого также будет хранится в спец-регистре, когда на ШД выставлены данные для записи и подан WR). Счётчики ИЕ10 включены каскадом (12 бит), и вроде как считают вниз. По достижении нуля происходит запись в них значения из регистров. Также, по достижении нуля триггер ТМ2 меняет своё состояние с 0 на 1 и наоборот. Его выход идёт на логический микшер (которого тоже пока нет).
Т.е. в коде это выглядело-бы так:
Примечание. В реальном AY счёт идёт вверх, и по достижении заданного значения счётчик обнуляется. Но, думаю, принципиальной разницы, куда считать, нет (в ряде других PSG счёт идёт как раз вниз). И я просто не знаю, как сделать, чтобы считалось вверх и сравнивалось со значением:)
Пока получается на одни только тональные каналы с предделителем - 20 корпусов. А ещё будут блоки внешнего интерфейса, генератора шума, генератора огибающей (чувствую, это будет что-то с чем-то), логического микшера, и блок ЦАП'ов.
|
27 Oct 2006 03:25 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Ну можно считать вверх, сравнивать число с чем-то и сбрасывать счётчики по достижению предела. Из регистров можно читать через буфера повернутые назад.
P.S. А в чём таком красивом ты эту схему рисовал?
|
27 Oct 2006 05:03 |
|
|
Shiru Otaku
Doomed
Joined: 16 Mar 2002 17:00 Posts: 490
|
Вот я и незнаю, как сравнивать число - не городить-же сетку из кучи мелкой логики? 12 бит, всё-таки..
О чтении регистров я и написал выше - у меня тоже пока только идея продублированных регистров, дубли включены в обратном направлении. Но регистров и так минимум 14, а с дублями будет 28.. Жуть:)
Рисовал, будешь смеяться, в самом обычном Paint'е. Что-то меня все программы для рисования схем утомили - то нет элементов в библиотеке, то есть, но нестандартные, то ещё чего-то... Руками оказалось проще нарисовать.
|
27 Oct 2006 05:10 |
|
|
Shiru Otaku
Doomed
Joined: 16 Mar 2002 17:00 Posts: 490
|
Заметил, что забыл нарисовать соединение входа R второго ИЕ10 с остальными. Но оно там, конечно, должно быть.
|
27 Oct 2006 05:15 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
XOR-ами можно сравнивать ну или специальными сравнивалками Ну я написал не про регистры, а буфера
Да ты еще и художник плюс ко всему
|
27 Oct 2006 05:22 |
|
|
Shiru Otaku
Doomed
Joined: 16 Mar 2002 17:00 Posts: 490
|
Ну всё равно - дофига корпусов получится, так ведь? А я искал решение, которое всё-таки будет более простым. Главное, чтобы оно работало, в чём я не очень уверен (раньше я ни регистров, ни ИЕ10 не использовал). Всё равно получается, что на каждый регистр нужно будет ставить по одному 8-разрядному буферу. Ладно, это потом можно пририсовать, чтение из регистров - пока не главное.
Есть немного. Ну а схему в Paint'е нарисовать не сложно, даже легче, чем на бумаге.
|
27 Oct 2006 05:31 |
|
|
CHRV
God
Joined: 29 Dec 2003 01:00 Posts: 1101 Location: Москва
|
Рекомендую взять какой нить схемный эмулятор. Например бесплатный Аltera MAX, там можно схему набирать 74серией, и потом обкатать на встроенном эмуле.
|
27 Oct 2006 05:31 |
|
|
Shiru Otaku
Doomed
Joined: 16 Mar 2002 17:00 Posts: 490
|
Ну, я пробовал сделать это в Proteus'е. Но оттестить эту вот схему там весьма затруднительно (хотя я всё ещё пытаюсь) - тут надо мудрить и с занесением значения в регистр, и с проверкой, что там получается на выходе (у меня что-то глючит, то и дело перестаёт появляться окно логического анализатора).. И все обозначения не соответствуют нашим справочникам, приходится смотреть по номерам ног, очень всё это напрягает.
|
27 Oct 2006 06:30 |
|
|
lvd
Maniac
Joined: 01 Mar 2005 21:42 Posts: 230
|
555СП1 - компаратор 4-битовый. Можно каскадировать с такими же.
|
27 Oct 2006 09:47 |
|
|
lvd
Maniac
Joined: 01 Mar 2005 21:42 Posts: 230
|
Ага, можно 74ой серией а можно сразу писать:
always @(posedge clk)
begin
if( freq_ctr>=freq_reg)
freq_ctr<=0;
else
freq_ctr<=freq_ctr+1;
end
и оно само нагенерит всё чо надо - компараторы, мультиплексоры, регистры, етц =)))
|
27 Oct 2006 09:49 |
|
|
Shiru Otaku
Doomed
Joined: 16 Mar 2002 17:00 Posts: 490
|
О, классно. Я её в справочнике не увидел, в самом конце затесалась. С ней сделать требуемое легко, но всё-таки это три лишних корпуса на тональный канал. Так что поковыряюсь я пока просто со счётчиками. Вроде с Proteus'ом справился, правда схема моя пока, конечно-же, не очень работает;)
Этот метод, безусловно, крут и полезен, но мне он знаний не добавит. Я лучше пока поразвлекаюсь по старинке:)
|
27 Oct 2006 11:07 |
|
|
lvd
Maniac
Joined: 01 Mar 2005 21:42 Posts: 230
|
Ну как это не добавит? Добавит знаний verilog'а или vhdl'а (по вкусу), знаний ПЛМок, пакета разработки для них и етц етц етц...
А насчёт рассыпухи - имхо, лучше браться за реальный проект, а не виртуальный. Ну например, музыкальный звонок на з80, ау и рассыпухе =))
|
27 Oct 2006 11:29 |
|
|
lvd
Maniac
Joined: 01 Mar 2005 21:42 Posts: 230
|
Казалось бы, какая разница, если проект виртуальный?...
Ничо, заработает, куда ей деться-то
|
27 Oct 2006 11:32 |
|
|
Shiru Otaku
Doomed
Joined: 16 Mar 2002 17:00 Posts: 490
|
Это понятно. Но у меня пока проблемы с чтением достаточно простых схем, а частенько бывает, что приспичит понять - что и как оно делает. Когда-нибудь доберусь и до FPGA.
Ну, это уже не так интересно, это, пожалуй, я уже сейчас смогу сообразить. Хотя, попробовать прикинуть можно. Пожалуй, я соображу такую схемку, а ты мне потом расскажешь, почему оно не будет работать, и откуда у меня растут руки:)
|
27 Oct 2006 11:39 |
|
|
lvd
Maniac
Joined: 01 Mar 2005 21:42 Posts: 230
|
Можно быть замечательным программистом на сях, но не всегда с 1ого раза видеть, что делает тот или иной кусок программы. Так же и со схемами - быть хорошим проектировщиком - не означает понимать любую схему с одного взгляда. Я, например, чтобы понять, как работают части пентагона1024 v1.4, рисовал на бумажке диаграммы сигналов - и понял. Просто втыкая в схему - понять куда труднее, а иногда и невозможно вовсе - например для схемы АТМки =)))
Нет уж, сам её симуляй =) Делать мне нечего кроме как в левые схемы втыкать =)
|
27 Oct 2006 14:20 |
|
|
Who is online |
Users browsing this forum: No registered users and 68 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|