Как он должен работать вкратце
Для начала представьте себе контроллер обычной памяти с раздельными шинами данных на запись и чтение: выставляете чип-селект, адрес и команду (запись/чтение). Если запись, то еще и данные. Если чтение - то на следующем такте (синхронная память) у вас на входе появятся читаемые данные.
Для контроллера ZBT/NoBL памяти у вас шина данных задержана на два такта относительно команды и мультиплексирована в одну с помощью буферов с третьим состоянием.
Т.е. выставляете чипселект, адрес и команду. Если команда "запись", то через два такта на шину выставляете данные; если чтение - то через два такта отключаетесь сами от шины, выставляете output_enable для памяти, и она на шину выставляет данные на чтение.
В общих чертах все.
Проблемы возникнут на больших частотах при чтении, но для вашей лабы это вряд ли нужно рассматривать.
Ваша работа?
http://electronix.ru/forum/index.php?showtopic=30613