И всё-таки: AY на рассыпухе;)

Публичный форум для http://www.nedopc.org/nedopc

Moderator: Shaos

Shiru Otaku
Retired
Posts: 490
Joined: 16 Mar 2002 17:00

И всё-таки: AY на рассыпухе;)

Post by Shiru Otaku »

Всё-же не даёт покоя мне эта идея. Практической пользы в ней никакой, однако интересно в деталях представить себе, как это могло выглядеть (то, о чём ходили слухи). Да и буржуи делают-же подобное - чем мы хуже?

Разумеется, я не предлагаю кому-то срочно всё бросить, и придумать мне схему. Напротив, я хочу придумать её сам (благо, эмулятор AY давным-давно делал, и знаю, как он работает). Это будет мне полезно главным образом в плане получения знаний в области проектирования логических схем. Данная конструкция прикидывается на 155/555 серии, по прикидкам получится не меньше 50 корпусов.

Для начала я набросал только небольшую часть схемы - пред-делитель и один тональный канал (программируемый делитель). Прошу специалистов объяснить мне, почему он не будет работать (в том, что работать он не будет, я практически уверен) ;)

Вот схема:
Image

Теперь объяснения, что она должна делать, по моей задумке.

На вход ИЕ5 идёт тактовая частота чипа, этот счётчик является пред-делителем (для разных блоков AY требуются разные коэффициенты деления входной частоты, на 2, 4, ..).

Всё остальное - это блок делителя частоты одного тонального канала, вместе с его регистрами. Пока я не предусматриваю возможности чтения из регистров, т.к. не очень понимаю, как это сделать (ставить ещё два регистра, входы которых соединить с выходами имеющихся, выходы с входами, но разрешать эти выходы только по RD?). Два регистра содержат 12-битное число. Записываться оно в них будет через схему внешнего интерфейса, которой пока нет (предполагается, что она будет выдавать уровень на вход C нужного регистра, номер которого также будет хранится в спец-регистре, когда на ШД выставлены данные для записи и подан WR). Счётчики ИЕ10 включены каскадом (12 бит), и вроде как считают вниз. По достижении нуля происходит запись в них значения из регистров. Также, по достижении нуля триггер ТМ2 меняет своё состояние с 0 на 1 и наоборот. Его выход идёт на логический микшер (которого тоже пока нет).

Т.е. в коде это выглядело-бы так:

Code: Select all

chn_a_count--;
if(chn_a_count<0)
{
chn_a_count=reg0|(reg1<<8);
chn_a_out^=1;
}
Примечание. В реальном AY счёт идёт вверх, и по достижении заданного значения счётчик обнуляется. Но, думаю, принципиальной разницы, куда считать, нет (в ряде других PSG счёт идёт как раз вниз). И я просто не знаю, как сделать, чтобы считалось вверх и сравнивалось со значением:)

Пока получается на одни только тональные каналы с предделителем - 20 корпусов. А ещё будут блоки внешнего интерфейса, генератора шума, генератора огибающей (чувствую, это будет что-то с чем-то), логического микшера, и блок ЦАП'ов.
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Ну можно считать вверх, сравнивать число с чем-то и сбрасывать счётчики по достижению предела. Из регистров можно читать через буфера повернутые назад.

P.S. А в чём таком красивом ты эту схему рисовал? ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
Shiru Otaku
Retired
Posts: 490
Joined: 16 Mar 2002 17:00

Post by Shiru Otaku »

Вот я и незнаю, как сравнивать число - не городить-же сетку из кучи мелкой логики? 12 бит, всё-таки..

О чтении регистров я и написал выше - у меня тоже пока только идея продублированных регистров, дубли включены в обратном направлении. Но регистров и так минимум 14, а с дублями будет 28.. Жуть:)

Рисовал, будешь смеяться, в самом обычном Paint'е. Что-то меня все программы для рисования схем утомили - то нет элементов в библиотеке, то есть, но нестандартные, то ещё чего-то... Руками оказалось проще нарисовать.
Shiru Otaku
Retired
Posts: 490
Joined: 16 Mar 2002 17:00

Post by Shiru Otaku »

Заметил, что забыл нарисовать соединение входа R второго ИЕ10 с остальными. Но оно там, конечно, должно быть.
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shiru Otaku wrote:Вот я и незнаю, как сравнивать число - не городить-же сетку из кучи мелкой логики? 12 бит, всё-таки..
XOR-ами можно сравнивать ну или специальными сравнивалками
Shiru Otaku wrote:О чтении регистров я и написал выше - у меня тоже пока только идея продублированных регистров, дубли включены в обратном направлении. Но регистров и так минимум 14, а с дублями будет 28.. Жуть:)
Ну я написал не про регистры, а буфера :)
Shiru Otaku wrote:Рисовал, будешь смеяться, в самом обычном Paint'е. Что-то меня все программы для рисования схем утомили - то нет элементов в библиотеке, то есть, но нестандартные, то ещё чего-то... Руками оказалось проще нарисовать.
Да ты еще и художник плюс ко всему ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
Shiru Otaku
Retired
Posts: 490
Joined: 16 Mar 2002 17:00

Post by Shiru Otaku »

Shaos wrote:XOR-ами можно сравнивать ну или специальными сравнивалками
Ну всё равно - дофига корпусов получится, так ведь? А я искал решение, которое всё-таки будет более простым. Главное, чтобы оно работало, в чём я не очень уверен (раньше я ни регистров, ни ИЕ10 не использовал).
Ну я написал не про регистры, а буфера :)
Всё равно получается, что на каждый регистр нужно будет ставить по одному 8-разрядному буферу. Ладно, это потом можно пририсовать, чтение из регистров - пока не главное.
Да ты еще и художник плюс ко всему ;)
Есть немного. Ну а схему в Paint'е нарисовать не сложно, даже легче, чем на бумаге.
User avatar
CHRV
God
Posts: 1101
Joined: 29 Dec 2003 01:00
Location: Москва

Post by CHRV »

Shiru Otaku wrote:Заметил, что забыл нарисовать соединение входа R второго ИЕ10 с остальными. Но оно там, конечно, должно быть.
Рекомендую взять какой нить схемный эмулятор. Например бесплатный Аltera MAX, там можно схему набирать 74серией, и потом обкатать на встроенном эмуле.
Shiru Otaku
Retired
Posts: 490
Joined: 16 Mar 2002 17:00

Post by Shiru Otaku »

Ну, я пробовал сделать это в Proteus'е. Но оттестить эту вот схему там весьма затруднительно (хотя я всё ещё пытаюсь) - тут надо мудрить и с занесением значения в регистр, и с проверкой, что там получается на выходе (у меня что-то глючит, то и дело перестаёт появляться окно логического анализатора).. И все обозначения не соответствуют нашим справочникам, приходится смотреть по номерам ног, очень всё это напрягает.
lvd
Maniac
Posts: 230
Joined: 01 Mar 2005 21:42

Post by lvd »

Shiru Otaku wrote:Вот я и незнаю, как сравнивать число - не городить-же сетку из кучи мелкой логики? 12 бит, всё-таки..
555СП1 - компаратор 4-битовый. Можно каскадировать с такими же.
lvd
Maniac
Posts: 230
Joined: 01 Mar 2005 21:42

Post by lvd »

CHRV wrote:
Shiru Otaku wrote:Заметил, что забыл нарисовать соединение входа R второго ИЕ10 с остальными. Но оно там, конечно, должно быть.
Рекомендую взять какой нить схемный эмулятор. Например бесплатный Аltera MAX, там можно схему набирать 74серией, и потом обкатать на встроенном эмуле.
Ага, можно 74ой серией а можно сразу писать:

always @(posedge clk)
begin
if( freq_ctr>=freq_reg)
freq_ctr<=0;
else
freq_ctr<=freq_ctr+1;
end

и оно само нагенерит всё чо надо - компараторы, мультиплексоры, регистры, етц =)))
Shiru Otaku
Retired
Posts: 490
Joined: 16 Mar 2002 17:00

Post by Shiru Otaku »

lvd wrote:555СП1 - компаратор 4-битовый. Можно каскадировать с такими же.
О, классно. Я её в справочнике не увидел, в самом конце затесалась. С ней сделать требуемое легко, но всё-таки это три лишних корпуса на тональный канал. Так что поковыряюсь я пока просто со счётчиками. Вроде с Proteus'ом справился, правда схема моя пока, конечно-же, не очень работает;)
lvd wrote:Ага, можно 74ой серией а можно сразу писать:
Этот метод, безусловно, крут и полезен, но мне он знаний не добавит. Я лучше пока поразвлекаюсь по старинке:)
lvd
Maniac
Posts: 230
Joined: 01 Mar 2005 21:42

Post by lvd »

Shiru Otaku wrote:
lvd wrote:Ага, можно 74ой серией а можно сразу писать:
Этот метод, безусловно, крут и полезен, но мне он знаний не добавит. Я лучше пока поразвлекаюсь по старинке:)
Ну как это не добавит? Добавит знаний verilog'а или vhdl'а (по вкусу), знаний ПЛМок, пакета разработки для них и етц етц етц...
А насчёт рассыпухи - имхо, лучше браться за реальный проект, а не виртуальный. Ну например, музыкальный звонок на з80, ау и рассыпухе =))
lvd
Maniac
Posts: 230
Joined: 01 Mar 2005 21:42

Post by lvd »

Shiru Otaku wrote:
lvd wrote:555СП1 - компаратор 4-битовый. Можно каскадировать с такими же.
О, классно. Я её в справочнике не увидел, в самом конце затесалась. С ней сделать требуемое легко, но всё-таки это три лишних корпуса на тональный канал. Так что поковыряюсь я пока просто со счётчиками.
Казалось бы, какая разница, если проект виртуальный?...
Вроде с Proteus'ом справился, правда схема моя пока, конечно-же, не очень работает;)
Ничо, заработает, куда ей деться-то :)
Shiru Otaku
Retired
Posts: 490
Joined: 16 Mar 2002 17:00

Post by Shiru Otaku »

lvd wrote:Ну как это не добавит? Добавит знаний verilog'а или vhdl'а (по вкусу), знаний ПЛМок, пакета разработки для них и етц етц етц...
Это понятно. Но у меня пока проблемы с чтением достаточно простых схем, а частенько бывает, что приспичит понять - что и как оно делает.

Когда-нибудь доберусь и до FPGA.
lvd wrote:А насчёт рассыпухи - имхо, лучше браться за реальный проект, а не виртуальный. Ну например, музыкальный звонок на з80, ау и рассыпухе =))
Ну, это уже не так интересно, это, пожалуй, я уже сейчас смогу сообразить. Хотя, попробовать прикинуть можно. Пожалуй, я соображу такую схемку, а ты мне потом расскажешь, почему оно не будет работать, и откуда у меня растут руки:)
lvd
Maniac
Posts: 230
Joined: 01 Mar 2005 21:42

Post by lvd »

Shiru Otaku wrote:
lvd wrote:Ну как это не добавит? Добавит знаний verilog'а или vhdl'а (по вкусу), знаний ПЛМок, пакета разработки для них и етц етц етц...
Это понятно. Но у меня пока проблемы с чтением достаточно простых схем, а частенько бывает, что приспичит понять - что и как оно делает.
Можно быть замечательным программистом на сях, но не всегда с 1ого раза видеть, что делает тот или иной кусок программы.

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

Я, например, чтобы понять, как работают части пентагона1024 v1.4, рисовал на бумажке диаграммы сигналов - и понял. Просто втыкая в схему - понять куда труднее, а иногда и невозможно вовсе - например для схемы АТМки =)))

lvd wrote:А насчёт рассыпухи - имхо, лучше браться за реальный проект, а не виртуальный. Ну например, музыкальный звонок на з80, ау и рассыпухе =))
Ну, это уже не так интересно, это, пожалуй, я уже сейчас смогу сообразить. Хотя, попробовать прикинуть можно. Пожалуй, я соображу такую схемку, а ты мне потом расскажешь, почему оно не будет работать, и откуда у меня растут руки:)
Нет уж, сам её симуляй =) Делать мне нечего кроме как в левые схемы втыкать =)