Desenvolva o projeto RTL (até a etapa de desenho da FSM) do sistema de semáforos conforme descrição a seguir:
Considere as lâmpadas de dois semáforos numa intersecção de uma via principal com uma outra menos movimentada: verde1, amarelo1, vermelho1 para o semáforo da via principal e verde2, amarelo2, vermelho2 para o semáforo da via secundária. O semáforo da via principal deve ficar sempre em verde até que apareça um veículo na via secundária. A presença deste veículo é detectada por um sinal
. Para garantir ausência de colisão o semáforo da via secundária deve estar em vermelho enquanto o outro estiver em verde ou amarelo. Após a detecção de um veículo na via secundária, o semáforo da via principal deve continuar em verde por mais 8 segundos e então passar para amarelo e vermelho. 0 semáforo da via secundária deve ficar verde no momento em que o outro estiver vermelho. O verde da via secundária deve durar 8 segundos. Após este tempo ele se tornará amarelo e então vermelho. Os dois amarelos devem durar 2 segundos. Assuma a existência de um relógio de período 1 ms .
Você deve seguir e mostrar todos os passos do projeto RTL até obter a FSM do bloco de controle assumindo o projeto de um sistema síncrono conforme estudado no capítulo 5 do livro.
Você deve seguir e mostrar todos os passos do projeto RTL até obter a FSM do bloco de controle assumindo o projeto de um sistema síncrono conforme estudado no capítulo 5 do livro.
Passo 1
O enunciado pede o projeto RTL de um controlador síncrono para dois semáforos (via principal e secundária).
Conteúdo: projeto de FSM (máquina de estados finitos) síncrona com clock de ;ms, geração de temporizações de
;s e
;s, lógica de transição condicionada ao sinal de presença
.
Conteúdo: projeto de FSM (máquina de estados finitos) síncrona com clock de
Passo 2
Definimos a interface do bloco de controle:
Entradas:
- (clock de
;ms)
- (reset síncrono)
- (presença de veículo na via secundária, ativo em nível alto)
Entradas:
-
-
-
Saídas (um bit cada):
- para via principal
- para via secundária
-
-
Internamente vamos precisar de um contador de tempo capaz de contar até
(para
s) e até
(para
s), ou seja, um registrador de pelo menos 13 bits.
Passo 3
Analisando o comportamento, definimos cinco estados da FSM de controle:
S0: via principal verde indefinidamente (até )
S1: via principal continua verde por mais ,s (extensão)
S2: via principal amarelo por ,s
S3: via principal vermelho e via secundária verde por ,s
S4: via secundária amarelo por ,s
S0: via principal verde indefinidamente (até
S1: via principal continua verde por mais
S2: via principal amarelo por
S3: via principal vermelho e via secundária verde por
S4: via secundária amarelo por
Em cada estado, geramos as saídas correspondentes às cores dos semáforos e habilitamos o contador até estourar no valor desejado.
Passo 4
Diagrama de estados (FSM):
+-------------------------------------------------+
| z=0 |
| +----------------+ |
| | S0 (G1) |<---------------+
| | green1=1, red2=1| loop until z |
| +----------------+ |
| | z=1 |
| v |
| +----------------+ |
| | S1 (G1 ext) | |
| | green1=1, red2=1| |
| +----------------+ |
| | cnt=8000 → |
| v |
| +----------------+ |
| | S2 (Y1) | |
| | yellow1=1, red2=1| |
| +----------------+ |
| | cnt=2000 → |
| v |
| +----------------+ |
| | S3 (G2) | |
| | red1=1, green2=1| |
| +----------------+ |
| | cnt=8000 → |
| v |
| +----------------+ |
| | S4 (Y2) | |
| | red1=1, yellow2=1| |
| +----------------+ |
| | cnt=2000 → |
+-------------------v-----------------------------+
retorna a S0
Passo 5
Codificação binária dos estados (3 bits):
Resposta
Estados e transições da FSM de controle:
Tabela de codificação (estado → bits Q
):
)