·

Cursos Gerais ·

Sistemas Digitais

Send your question to AI and receive an answer instantly

Ask Question

Preview text

UFABC MCTA024 Sistemas Digitais 2020QS Professor Denis Gustavo Fantinato Bloco A Sala 5092 denisfantinatoufabcedubr Laboratório 3 Nesta aula prática vamos analisar e implementar uma máquina de estados do tipo Mealy em VHDL Parte 1 Reconhecedor de Sequência 1101 Na Aula 03 vimos como projetar um Reconhecedor de Sequências Em especial para reconhecer a sequência 1101 encontramos o seguinte diagrama de estados considerando o modelo de Mealy que possui quatro estados A B C e D uma entrada x e uma saída z Nesta aula prática vamos conferir como se dá a implementação dessa máquina de estados Inicialmente faça o download dos arquivos seqrecvhd e secrectestbenchvhd que se encontram disponíveis no repositório do Tidia Começaremos pelo arquivo seqrecvhd pois ele definirá o comportamento da máquina de estados Nele são definidas as entradas x CLK RESET e saídas z O sinal de clock CLK permitirá que a máquina faça transições entre os estados e o RESET fará com que a máquina vá para um estado inicial Sequence Recognizer VHDL Process Description See Figure 418d for state diagram library ieee use ieeestdlogic1164all entity seqrec is portCLK RESET X in stdlogic Z out stdlogic end seqrec Em seguida temos a arquitetura desta entidade em que definimos os estados A B C e D e também os sinais state que representará o estado atual da máquina e nextstate que indicará qual é o estado seguinte da máquina Note que não atribuímos nenhuma codificação para esses estados o compilador que se encarregará disto architecture process3 of seqrec is type statetype is A B C D signal state nextstate statetype A arquitetura será dividida em três processos lembremse que dentro de um processo as instruções são executadas de forma sequencial O primeiro processo é responsável por atualizar a variável state nenhum outro processo poderá fazer isso e ele é sensível aos sinais CLK e RESET ou seja o processo é verificado caso haja qualquer mudança nessas variáveis begin Process 1 stateregister implements state storage with asynchronous reset stateregister process CLK RESET begin if RESET 1 then state A elsif CLKevent and CLK 1 then state nextstate end if end process Note que o RESET é assíncrono não depende do clock Caso RESET não estiver ativo ocorre uma atualização do estado na borda de subida de CLK O segundo processo é responsável por atualizar a variável nextstate nenhum outro processo poderá atualizar esta variável ou seja ele verifica qual será o estado futuro Esse processo é sensível à entrada X e à variável state Process 2 nextstatefunction implements next state as a function of input X and state nextstatefunc process X state begin case state is when A if X 1 then nextstate B else nextstate A end if when B if X 1 then nextstate C else nextstate A end if when C if X 1 then nextstate C else nextstate D end if when D if X 1 then nextstate B else nextstate A end if end case end process Por fim o terceiro processo é responsável por atualizar a variável Z e somente ele fará isso Esse processo é sensível às variáveis X e state Process 3 outputfunction implements output as function of input X and state outputfunc process X state begin case state is when A Z 0 when B Z 0 when C Z 0 when D if X 1 then Z 1 else Z 0 end if end case end process end Agora analise com cuidado este código VHDL e tente compreender como são gerenciadas cada uma das transições de estado e valores de saída Para testar esta implementação iremos usar o arquivo de testbench seqrectestbenchvhd Ele será responsável por gerar os sinais de entrada Inicialmente definimos a topologia do testbench sem entradas e saidas Testbench for sequence recognizer example library ieee use ieeestdlogic1164all ieeestdlogicunsignedall entity seqrectestbench is end seqrectestbench Em seguida é construída a arquitetura que definirá os sinais que alimentarão o módulo seqrec São gerados os sinais de entrada clock X e reset e o sinal de saída Z Também é criada o sinal testsequence na forma de vetor que será toda a sequência de entrada X irá assumir o valor dos elementos desse vetor um por vez e criase um período padrão de 100 ns Por fim chamase o componente seqrec architecture testbench of seqrectestbench is signal clock X reset Z stdlogic signal testsequence stdlogicvector0 to 10 01110101100 constant PERIOD time 100 ns component seqrec is portCLK RESET X in stdlogic Z out stdlogic end component begin u1 seqrec port mapclock reset X Z A arquitetura será dividida em dois processos paralelos O primeiro deles é responsável por gerar os sinais reset e X No ínicio para garantir que o reconhecedor de sequência encontrase no estado inicial ativase o sinal reset durante um periodo dado por 5PERIOD4 Após isso reset é desativado e X passa a assumir os valores definidos no sinal testsequence This process applies reset and then applies the test sequence to input X applyinputs process begin reset 1 X 0 ensure that inputs are applied away from the active clock edge wait for 5PERIOD4 reset 0 for i in 0 to 10 loop X testsequencei wait for PERIOD end loop wait wait forever end process O segundo processo é responsável por gerar o sinal de clock que basicamente irá alternar entre os valores lógicos 0 e 1 a cada meio período This process provides the clock pulses generateclock process begin clock 1 wait for PERIOD2 clock 0 wait for PERIOD2 end process end testbench Usando os tutoriais fornecidos nas aulas anteriores aplique o testbench para através das formas de onda avaliar o correto funcionamento do reconhecedor de sequência Parte 2 Reconhecedor de Sequência 1011 Projete um reconhecedor de sequência 1011 baseandose no modelo de Mealy Em seguida adapte o código de seqrecvhd para reconhecer esta sequência Faça uma captura de tela da simulação no ModelSim com uma análise de um parágrafo sobre os resultados obtidos Na atividade do Tidia Crie um arquivo compactado com o nome RAzip que contenha os arquivos seqrecvhd modificado para a sequência 1011 Captura de tela da simulação no ModelSim Arquivo PDF com a análise de um parágrafo sobre os resultados obtidos E submetêlo na Atividade do Tidia Aula 17 Prática até o prazo indicado