Jump to content

    

Как сделать эмуляцио РОМ?

Я делал полноценный эмулятор РОМ в первой половине 90-х.

Он представлял собой блок ОЗУ (сначала 8 килобайт на 4-х 537РУ10, потом 32 килобайта на 4-х 537РУ17, а потом уже сразу на импортной микросхеме статического ОЗУ на 128К), шина адреса и шина данных которого была мультиплексирована - то есть память была два режима доступа к памяти. В первом режиме мультиплескоры подавали адрес с тестируемой системы, а буфер транслировал данные на шину данных тестируемой системы - это был режим эмуляции. Во втором режиме мультиплексор подключал адрес ОЗУ к блоку загрузки, также к блоку загрузки подключалась шина данных ОЗУ - это был режим записи программы. Все это добро было собрано на ISA-плате и втыкалось в РС, а тестируемая система подключалась шлейфом.

 

Сейчас бы я сделал блок памяти на флеши.

Режим записи/верификации прошивки можно реализовать на микроконтроллере, с выводами выдерживающими 5V. Цепляем контроллер к шине адреса/данных/управления, пишем программку для контроллера, чтобы он принимал команды, например, по UART и читал/писал флешку. В режиме эмуляции микроконтроллер переключает свои выводы на вход и не влияет на работу схему.

 

Следующий вопрос как сделать так чтобы тетстируемая система не мешала процессу прошивки. Самое простое - сделать трансляцию адреса и сигналов управления (CS/OE) через регистры/буферы с 3-им состоянием (чипы типа 74HCT373/244/125). Когда микроконтроллер желает прошить данные - он запрещает выход этих буферов и получает доступ к шине адреса флеш. Когда надо эмулировать - буфера разрешаются. Аналогично - шина данных флеш также транслируется в систему через буфер, и шина данных системы не мешает программировать контроллеру флеш. Еще хорошо бы рассмотреть в каком состоянии находятся шины данных в момент сброса - есть вероятность что в высокоимпедансном - тогда можно вооще обойтись без боьшей части буферов.

 

Все это можно сделать и на ПЛИС, и на рассыпушке. Если на рассыпушке - то понадобится 4-5 корпусов 74HCT244/373, корпус мелкий элемент типа 3ИЛИ-НЕ (чтобы разрешать буфер на шине данных по !OE & !CS & EMU_MODE), ну и микроконтроллер типа Мега8515 - монтажа на день-два.

 

На ПЛИС макетировать чуть сложнее - мелкий шаг у них всех и ног надо много - думаю тут 100-ножка типа EPM3064 пойдет. Если на ПЛИС - то уже можно какой-нить контроллер типа Cypress 68013 и программку уже писать для PC чтобы читать-писать данные.

 

 

Share this post


Link to post
Share on other sites
Я делал полноценный эмулятор РОМ в первой половине 90-х.

Он представлял собой блок ОЗУ (сначала 8 килобайт на 4-х 537РУ10, потом 32 килобайта на 4-х 537РУ17, а потом уже сразу на импортной микросхеме статического ОЗУ на 128К), шина адреса и шина данных которого была мультиплексирована - то есть память была два режима доступа к памяти. В первом режиме мультиплескоры подавали адрес с тестируемой системы, а буфер транслировал данные на шину данных тестируемой системы - это был режим эмуляции. Во втором режиме мультиплексор подключал адрес ОЗУ к блоку загрузки, также к блоку загрузки подключалась шина данных ОЗУ - это был режим записи программы. Все это добро было собрано на ISA-плате и втыкалось в РС, а тестируемая система подключалась шлейфом.

 

Сейчас бы я сделал блок памяти на флеши.

Режим записи/верификации прошивки можно реализовать на микроконтроллере, с выводами выдерживающими 5V. Цепляем контроллер к шине адреса/данных/управления, пишем программку для контроллера, чтобы он принимал команды, например, по UART и читал/писал флешку. В режиме эмуляции микроконтроллер переключает свои выводы на вход и не влияет на работу схему.

 

Следующий вопрос как сделать так чтобы тетстируемая система не мешала процессу прошивки. Самое простое - сделать трансляцию адреса и сигналов управления (CS/OE) через регистры/буферы с 3-им состоянием (чипы типа 74HCT373/244/125). Когда микроконтроллер желает прошить данные - он запрещает выход этих буферов и получает доступ к шине адреса флеш. Когда надо эмулировать - буфера разрешаются. Аналогично - шина данных флеш также транслируется в систему через буфер, и шина данных системы не мешает программировать контроллеру флеш. Еще хорошо бы рассмотреть в каком состоянии находятся шины данных в момент сброса - есть вероятность что в высокоимпедансном - тогда можно вооще обойтись без боьшей части буферов.

 

Все это можно сделать и на ПЛИС, и на рассыпушке. Если на рассыпушке - то понадобится 4-5 корпусов 74HCT244/373, корпус мелкий элемент типа 3ИЛИ-НЕ (чтобы разрешать буфер на шине данных по !OE & !CS & EMU_MODE), ну и микроконтроллер типа Мега8515 - монтажа на день-два.

 

На ПЛИС макетировать чуть сложнее - мелкий шаг у них всех и ног надо много - думаю тут 100-ножка типа EPM3064 пойдет. Если на ПЛИС - то уже можно какой-нить контроллер типа Cypress 68013 и программку уже писать для PC чтобы читать-писать данные.

Спасибо! подумаю над этим, выходные особо ничего не дали.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this