MPSU / exAPS

Архитектуры процессорных систем (старый репозиторий, ранее размещавшийся по адресу github.com/MPSU/APS)

Home Page:https://github.com/MPSU/APS

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ЛР 7 для ИВТ. Переход в состояние CHECK_PARITY_STOP_BITS контроллера клавиатуры

gr33nka opened this issue · comments

Discussed in MPSU/APS#69

Originally posted by IlorDash December 19, 2022
В лабораторной предлагается код конечного автомата для контроллера клавиатуры по интерфейсу PS/2.

При использовании этого кода возникла проблема: автомат переходил в состояние CHECK_PARITY_STOP_BITS в момент, когда еще необходимо было принимать данные, связано это с тем, что инкрементация counter_bit начинается с старт бита, который нам принимать в сдвиговый регистр не нужно, из-за этого последний бит данных не записывается в сдвиговый регистр.

Также нам необходимо в конце принять в сдвиговый регистр бит четности, но опять же автомат переходит в состояние CHECK_PARITY_STOP_BITS и не записывает его.

Для решения этих багов предлагаю в конечном автомате изменить условие перехода в состояние CHECK_PARITY_STOP_BITS на (count_bit == 10)

На временной диаграмме передаю контроллеру клавиатуры код клавиши - 0x3a. Как видно из диаграммы, менять состояние на CHECK_PARITY_STOP_BITS необходимо при counter_bit = 10, к этому моменту в сдвиговый регистр приняты данные 0x3a и бит четности = 1

image

image