diff --git a/src/test/resources/docu/images/pt/scr00.png b/src/test/resources/docu/images/pt/scr00.png new file mode 100644 index 000000000..ac54cdcb4 Binary files /dev/null and b/src/test/resources/docu/images/pt/scr00.png differ diff --git a/src/test/resources/docu/images/pt/scr01.png b/src/test/resources/docu/images/pt/scr01.png new file mode 100644 index 000000000..be4863634 Binary files /dev/null and b/src/test/resources/docu/images/pt/scr01.png differ diff --git a/src/test/resources/docu/images/pt/scr02.png b/src/test/resources/docu/images/pt/scr02.png new file mode 100644 index 000000000..a73adec0a Binary files /dev/null and b/src/test/resources/docu/images/pt/scr02.png differ diff --git a/src/test/resources/docu/images/pt/scr03.png b/src/test/resources/docu/images/pt/scr03.png new file mode 100644 index 000000000..e9d33a827 Binary files /dev/null and b/src/test/resources/docu/images/pt/scr03.png differ diff --git a/src/test/resources/docu/images/pt/scr04.png b/src/test/resources/docu/images/pt/scr04.png new file mode 100644 index 000000000..4bea7a105 Binary files /dev/null and b/src/test/resources/docu/images/pt/scr04.png differ diff --git a/src/test/resources/docu/images/pt/scr05.png b/src/test/resources/docu/images/pt/scr05.png new file mode 100644 index 000000000..381d2f2d3 Binary files /dev/null and b/src/test/resources/docu/images/pt/scr05.png differ diff --git a/src/test/resources/docu/images/pt/scr06.png b/src/test/resources/docu/images/pt/scr06.png new file mode 100644 index 000000000..5e52c1390 Binary files /dev/null and b/src/test/resources/docu/images/pt/scr06.png differ diff --git a/src/test/resources/docu/images/pt/scr07.png b/src/test/resources/docu/images/pt/scr07.png new file mode 100644 index 000000000..22b1fcab8 Binary files /dev/null and b/src/test/resources/docu/images/pt/scr07.png differ diff --git a/src/test/resources/docu/images/pt/scr08.png b/src/test/resources/docu/images/pt/scr08.png new file mode 100644 index 000000000..583139482 Binary files /dev/null and b/src/test/resources/docu/images/pt/scr08.png differ diff --git a/src/test/resources/docu/images/pt/scr09.png b/src/test/resources/docu/images/pt/scr09.png new file mode 100644 index 000000000..c42ec8435 Binary files /dev/null and b/src/test/resources/docu/images/pt/scr09.png differ diff --git a/src/test/resources/docu/images/pt/scr10.png b/src/test/resources/docu/images/pt/scr10.png new file mode 100644 index 000000000..b37e7efd7 Binary files /dev/null and b/src/test/resources/docu/images/pt/scr10.png differ diff --git a/src/test/resources/docu/images/pt/scr11.png b/src/test/resources/docu/images/pt/scr11.png new file mode 100644 index 000000000..863ad448c Binary files /dev/null and b/src/test/resources/docu/images/pt/scr11.png differ diff --git a/src/test/resources/docu/images/pt/scr12.png b/src/test/resources/docu/images/pt/scr12.png new file mode 100644 index 000000000..90f11d47d Binary files /dev/null and b/src/test/resources/docu/images/pt/scr12.png differ diff --git a/src/test/resources/docu/images/pt/scr13.png b/src/test/resources/docu/images/pt/scr13.png new file mode 100644 index 000000000..45149afbb Binary files /dev/null and b/src/test/resources/docu/images/pt/scr13.png differ diff --git a/src/test/resources/docu/images/pt/scr14.png b/src/test/resources/docu/images/pt/scr14.png new file mode 100644 index 000000000..e947466a9 Binary files /dev/null and b/src/test/resources/docu/images/pt/scr14.png differ diff --git a/src/test/resources/docu/images/pt/scr20.png b/src/test/resources/docu/images/pt/scr20.png new file mode 100644 index 000000000..495792f1f Binary files /dev/null and b/src/test/resources/docu/images/pt/scr20.png differ diff --git a/src/test/resources/docu/images/pt/scr21.png b/src/test/resources/docu/images/pt/scr21.png new file mode 100644 index 000000000..1c56aa4bc Binary files /dev/null and b/src/test/resources/docu/images/pt/scr21.png differ diff --git a/src/test/resources/docu/images/pt/scr22.png b/src/test/resources/docu/images/pt/scr22.png new file mode 100644 index 000000000..830a92ef5 Binary files /dev/null and b/src/test/resources/docu/images/pt/scr22.png differ diff --git a/src/test/resources/docu/images/pt/scr23.png b/src/test/resources/docu/images/pt/scr23.png new file mode 100644 index 000000000..411c3c3e9 Binary files /dev/null and b/src/test/resources/docu/images/pt/scr23.png differ diff --git a/src/test/resources/docu/images/pt/scr24.png b/src/test/resources/docu/images/pt/scr24.png new file mode 100644 index 000000000..c7446b219 Binary files /dev/null and b/src/test/resources/docu/images/pt/scr24.png differ diff --git a/src/test/resources/docu/images/pt/scr25.png b/src/test/resources/docu/images/pt/scr25.png new file mode 100644 index 000000000..a21dbcb69 Binary files /dev/null and b/src/test/resources/docu/images/pt/scr25.png differ diff --git a/src/test/resources/docu/static_pt.xml b/src/test/resources/docu/static_pt.xml new file mode 100644 index 000000000..0f5e02987 --- /dev/null +++ b/src/test/resources/docu/static_pt.xml @@ -0,0 +1,556 @@ + + + + + + Digital é um simulador simples usado para testar circuitos digitais. As portas lógicas são conectadas + umas às outras por fios e o comportamento de todo o circuito pode ser simulado. + O usuário pode interagir com a simulação ou pressionando botões, ou definindo + valores para as entradas do circuito. + + + Dessa forma, a maioria dos circuitos básicos usados em eletrônica digital pode ser construída e simulada. + Na pasta examples, os usuários encontrarão exemplos que incluem até um processador Harvard de 16-bits + de ciclo único completamente funcional. + + + O simulador tem dois modos de operação: Edição e Simulação. + No modo de edição, modificações no circuito poderão ser efetuadas. Os usuários poderão adicionar ou conectar componentes. + Nesse modo, a simulação estará desabilitada. + O modo de simulação será ativado ao se pressionar o botão Iniciar na barra de tarefas. + Ao iniciar-se a simulação, o circuito será testado em relação à sua consistência. + Se houver erros no circuito, uma mensagem apropriada será exibida e + os componentes ou fios afetados ficarão em destaque. Se não houver erro, a simulação estará habilitada a prosseguir. + Será possível, então, interagir com a simulação em curso. + No modo de simulação não será possível modificar o circuito. Para fazer isso, para voltar ao modo de edição + será necessário parar a simulação. + + + + + + Como um primeiro exemplo, sugere-se construir um circuito com uma porta OU_Exclusivo (XOR). + Na janela principal, o menu Componentes permitirá a seleção de vários tipos de componentes. + Eles serão posicionados na área de trabalho. Esse processo poderá ser cancelado pressionando-se a tecla ESC a qualquer momento. + Sugere-se iniciar pela seleção de um componente de entrada. + Mais tarde esse componente poderá ser controlado interativamente mediante uso do mouse. + + + Após seleção, a primeira entrada poderá ser posicionada na área de trabalho. + O ponto vermelho no símbolo do componente de entrada será seu ponto de conexão com um fio, + ao qual se conectará mais tarde. + A cor vermelha indicará uma saída. Isso significa que a porta definirá um sinal cujo valor será transmitido ao fio. + + + + Da mesma forma, uma segunda entrada deverá ser adicionada. O melhor lugar para posicioná-la será diretamente abaixo da primeira. + + + Após adicionar as entradas, a porta OU_Exclusivo (XOR) deverá ser selecionada. Essa porta representará o valor lógico da + função. + + + + Essa porta poderá então ser adicionada ao circuito. É melhor posicioná-la de maneira que estabelecer as conexões subsequentes + sejam tão simples de se fazer quanto o possível. Os pontos azuis indicarão os terminais de entrada da porta. + + + + Em seguida, selecionar uma saída que será usada para mostrar o estado do sinal, ou que mais tarde transmitirá + ao restante do circuito ao qual estiver incorporada. + + + + Ela também deverá ser posicionda de maneira que seja fácil executar conexões. + A saída terá um ponto azul, que indicará um terminal de entrada. + Por aí se poderá fornecer o valor que será exportado posteriormente. + + + + Depois que todos os componentes estiverem selecionados e devidamente posicionados, + usar o mouse para criar as conexões entre os pontos azuis e vermelhos. + Certificar-se que apenas um ponto vermelho esteja conectado a qualquer número de pontos azuis. + Somente o uso de saídas tri-state poderão escapar dessa regra e interconectar + outros pontos vermelhos. + Quando todos os fios estiverem ligados, o circuito estará completo. + + + + A interação com o circuito será possível quando a simulação for iniciada. + Isso poderá ser feito clicando no botão Iniciar localizado na barra de ferramentas. + Após a simulação iniciar-se, as cores dos fios irão se alterar e + as entradas e as saídas tomarão seus respectivos valores. A cor verde clara indicará o nível lógico '1', + e a verde escura, o nível lógico '0'. + Na figura acima, todos os fios terão o valor '0'. + + + + Por meio de clicks do mouse, as entradas poderão ser comutadas. Uma vez que a simulação estiver ativa, + as saídas serão alteradas de acordo com os estados das entradas atuais. O circuito se comportará conforme a + porta OU_Exclusivo esperada. + + + + Para outras manipulações do circuito, primeiro a simulação deverá ser interrompida. A maneira mais fácil de fazer isso é + por meio do botão Parar na barra de ferramentas. Ao clicar o botão direito sobre um componente, uma caixa de diálogo se abrirá + para exibir suas propriedades. O rótulo 'A' poderá ser definido para a primeira entrada + mediante esse atributo. + + + + Dessa forma, os rótulos das outras entradas e saídas remanescentes poderão ser configurados. No menu + Análise há um item correspondente. Essa função executará a análise do circuito atual. + Contudo, isso somente será possível se todas as entradas e saídas estiverem devidamente rotuladas. + + + + A tabela-verdade do circuito simulado será apresentada em uma nova janela. Abaixo da tabela poderá ser encontrada + a expressão algébrica associada ao circuito. Se houver várias expressões algébricas equivalentes, + uma janela em separado se abrirá, e mostrará todas as outras possíveis. + + + + A caixa de diálogo da tabela tem uma entrada K-Map no menu principal. Isso permitirá exibir a tabela-verdade + na forma de um K-Map. + + + + Na parte de cima da caixa de diálogo há uma lista do tipo drop-down que permitirá selecionar a expressão desejada + no K-Map. Dessa forma se poderá, por exemplo, ilustrar como várias expressóes algébricas equivalentes poderão + daí resultar. Entretanto, para esse exemplo, há apenas uma expressão mínima. + A tabela-verdade também poderá ser modificada por meio de clicks no K-Map. + + + + + Todos os componentes deverão estar conectados por fios. Não será possível conectar dois componentes simplesmente + colocando-os diretamente justapostos. + + + Além disso, só haverá conexões entre o ponto final de um fio e um componente. + Se um pino de um componente for colocado no meio de um fio, nenhuma conexão se estabelecerá entre o componente + e o fio. + Portanto, um fio deverá realmente terminar em cada pino ao qual estiver conectado. + Mesmo se um componente do tipo túnel for utilizado, deverá haver um fio entre o pino e esse túnel. + + + É necessário que o componente seja selecionado mediante a ferramenta de seleção retangular para que possa ser movido, + incluindo os fios conectados. Para mover um componente sem os fios conectados, + selecioná-lo apenas pelo click do mouse. + + + Com CTRL-click se poderá selecionar um único fio e movê-lo ou apagá-lo. + Se a tecla 'D' for pressionada enquanto o fio for traçado, esse traçado poderá ser feito na diagonal. + A tecla 'S' permitirá dividir um segmento de linha em dois. + + + + + Ao se construir um circuito complexo, esse poderá se tornar rapidamente muito confuso. Para ajudar, + diferentes partes de um circuito poderão ser armazenadas em arquivos distintos. Esse mecanismo também poderá ser + usado em um subcircuito que, uma vez criado, venha ocorrer em vários outros circuitos. + Essa abordagem é vantajosa porque os arquivos poderão ser armazenados independentemente empregando-se + um sistema para o controle de versões, e as eventuais mudanças poderão ser melhor acompanhadas. + + + + Por exemplo, considerar um somador de 4-bits: primeiramente, se construirá um somador simples para 2-bits (meia-soma). + Esse será constituído por uma porta XOR e uma porta AND. A soma de dois bits 'A' e 'B' produzirá as saídas 'S' (soma) e 'C' (vai-um). + Esse circuito será armazenado no arquivo halfAdder.dig. + + + + A partir da combinação de dois circuitos de meia-soma, um somador completo (full adder) poderá ser construído. Para isso, basta criar um arquivo vazio e + salvá-lo como fullAdder.dig na mesma pasta onde estiver o halfAdder.dig. Em seguida, + o somador simples poderá ser adicionado ao novo circuito via menu ComponentesPersonalizado. + A ordem dos pinos no pacote do somador simples poderá ser rearranjada pelo + menu EditarOrdenar entradas ou EditarOrdenar entradas. + O somador completo operará os três bits 'A', 'B' e 'Ci' e produzirá as saídas 'S' (soma) e 'Co' (vai-um). + + + + Para se verificar a correção da função do somador completo, um caso de testes poderá ser acrescentado. No caso de testes, + a tabela-verdade será armazenada, a qual será submetida ao circuito. Dessa forma se poderá automaticamente + verificar seu comportamento. + + + + Os testes poderão ser executados via editor de caso de testes ou pelo botão de teste na barra de ferramentas. + As células da tabela receberão destaque na cor verde para indicar quando a saída do circuito for equivalente + à tabela-verdade nesse caso de testes. + + + + Assim, somadores completos poderão ser combinados para formar um somador em cascata (ripple-carry). + Nesse caso, o vai-um de uma adição serão repassado à próxima como entrada para operar + o bit de ordem mais alta, da mesma maneira como se faz manualmente com papel-e-lápis. + O somador de 4-bits deverá ser testado para confirmar sua função. Para isso, um caso de testes deverá ser acrescentado. + + + + Um caso de testes executará 100% dos testes, o que somente será possível para circuitos relativamente simples: todas as + possíveis combinações de 512 entradas serão aplicadas ao circuito, e se verificará se sua saída estará correta. + A primeira linha relacionará a lista de sinais de entradas e saídas. Abaixo dessa, os valores das entradas a serem aplicados e + os das saídas a serem verificadas na mesma linha, tal como em uma tabela-verdade. + Nesse exemplo, contudo, 512 linhas serão requeridas. Isso poderá ser uma tarefa tediosa e não isenta da possibilidade de erros. + Será mais fácil e mais confiável gerar automaticamente essas linhas necessárias. + Para isso, as variáveis A e B deverão, cada uma, variar + de 0 a 15. Os respectivos valores de A e B serão atribuídos às entradas 'A[n]' e 'B[n]'. + Isso será verificado com as saídas do circuito para os valores de A+B. Será verificado novamente para + os bits de vai-um definidos, para cada caso em que resultar em A+B+1. + Os detalhes da sintaxe de teste serão fornecidos pela caixa de diálogo de ajuda. + + + Se um circuito estiver incorporado a outro, somente o nome do subcircuito será armazenado nesse, e não o próprio subcircuito. + Os arquivos correspondentes aos subcircuitos incorporados deverão portanto serem encontrados na pasta de arquivos + do sistema durante a simulação. + De modo a prover suporte para os diversos métodos de trabalho dos usuários da melhor forma possível, e ainda evitar + uma administração complexa dos caminhos para a importação e similares, uma estratégia pouco usual para fazê-lo foi implementada. + + + Somente os nomes dos circuitos incorporados serão armazenados no arquivo do circuito, não seus caminhos completos. + Se um arquivo necessitar ser aberto, todas as subpastas serão vasculhadas para se encontrar o arquivo com nome correspondente. + Se um arquivo aceitável for encontrado, será importado. Esse processo dependerá apenas do nome do arquivo a ser lido, + e não do caminho até ele. De forma correspondente, uma mensagem de erro será gerada se houver diversos arquivos com nomes iguais + em subpastas diferentes, uma vez que haverá ambiguidades. + + + Uma estrutura de projeto adequada portanto será a seguinte: o circuito principal (raiz) ficará localizado em uma pasta separada. + Todos os circuitos importados deverão estar na mesma pasta ou em subpastas. Todos os circuitos deverão ter nomes diferentes, + dessa forma não deverá acontecer que ocorram circuitos com o mesmo nome em pastas diferentes. + + + + + + + Durante a simulação, cada porta lógica terá um atraso de propagação. Cada componente encontrado na biblioteca + terá o mesmo atraso de propagação independente de sua complexidade. + Assim a porta AND terá o mesmo atraso de propagação de um multiplicador. + As únicas exceções serão os diodos, as chaves e os distribuidores que serão usados para os barramentos de dados. + Esses componentes não terão qualquer atraso. + + + Se for necessário simular uma porta, por exemplo, um multiplicador, com um atraso de propagação mais longo, + um componente próprio para atraso deverá ser inserido no circuito logo antes da saída do multiplicador. + + + Se um circuito estiver incluído em outro maior, esse incluirá também o seu comportamento ao longo do tempo. + Assim, se um circuito complexo for incluído e tiver um atraso de propagação bem grande, porque os sinais das entradas + terão que passar por três portas, até que cheguem à saída, esse comportamento será conservado quando for incluído + em outro circuito. + Não haverá atrasos adicionais pela inclusão em outro circuito. Se nem todas as saídas de um circuito tiverem + o mesmo atraso de propagação, isso também poderá ser o caso quando for incluído em um circuito maior. + Em geral, ao se incluir um circuito em outro, isso não modificará o comportamento ao longo do tempo de ambos. + Um circuito incorporado a outro se comportará exatamente da mesma forma como se todos os componentes também tivessem + sido inseridos nesse mesmo nível do circuito. + + + + + + Um circuito poderá ser analisado via menuAnálise. A tabela-verdade será gerada apenas para + circuitos combinacionais. A tabela-verdade poderá ser editada se assim o desejar. + Um novo circuito será gerado a partir dessa tabela-verdade após sua edição. + + + Além de circuitos combinatórios, também será possível analisar ou gerar circuitos sequenciais. + Em lugar de uma simples tabela-verdade, se criará uma tabela de transições de estado. + Cada flip-flop ocorrerá tanto no lado das entradas e quanto no das saídas da tabela de transições de estado. + Nessa tabela, do lado direito, poderão ser encontrados os próximos estados, que tomarão lugar + após o próximo sinal do clock. O próximo estado dependerá do estado atual dos flip-flops encontrados + do lado esquerdo da tabela. + Para que a análise seja possível, todos os flip-flops deverão ter nomes. + + + A seguinte convenção se aplicará: os próximos estados de um bit do lado direito da tabela + serão indicados por letras minúsculas 'n+1'. O estado atual correspondente será indicado pelo sufixo 'n'. + Se houver uma variável de estado 'A', 'An' indicará o estado atual e 'An+1' indicará o próximo estado. + Se, na tabela-verdade dos lados esquerdo e direito, os sinais estiverem presentes, e corresponderem a esse padrão, + irá se supor uma transição de estados nessa tabela, e um circuito sequencial será gerado em lugar de um combinacional. + + + Deve-se notar que se um circuito ao ser analisado contiver elementos combinacionais, + além dos flip-flops D e JK nativos, como por exemplo, portas NOR, + isso não será reconhecido com um flip-flop e, portanto, não será possível analisar tal circuito. + + + + + + No menu de geração de circuito na tabela-verdade também há funções para se gerar arquivos + JEDEC. Esse formato especial de arquivo descreve o mapa de fusíveis de um PLD. + O arquivo JEDEC poderá ser gravado em um PLD correspondente por meio de um programador especial. + No momento, os circuitos do tipo GAL16v8 e GAL22v10 ou mapa de fusíveis para dispositivos compatíveis + têm suporte. + + + + + Os chips na família + + ATF150x + + são CPLDs comuns com até 128 macrocélulas. São disponíveis em um encapsulamento PLCC, + o que os torna convenientes para exercícios em laboratório: se um circuito integrado se queimar durante os exercícios, + esse poderá ser simplesmente substituído. Além disso, como o + + ATDH1150USB + + é bem fácil de usar. Basta ter um programador de baixo custo disponível. Esse programador será capaz de lidar com os chips + + ATF150x + + em um sistema que use a interface JTAG. + Uma placa acessível para avaliação + + (ATF15XX-DK3-U) + + também está disponível. + O software + + ATMISP + , + à disposição no site da ATMEL/Microchip, será necessário para programar esses chips. + + + Infelizmente, detalhes do mapa de fusíveis não estão publicamente à disposição, de modo que não há filtros adequados para isso + que possam ser incorporados à ferramenta, assim como foi possível para os chips GAL16v8 e GAL22v10. + + + Portanto, os filtros fit150[x].exe fornecidos pela ATMEL deverão ser usados. Esses programas criarão um arquivo + JEDEC adequado a partir de um arquivo TT2 que poderá então ser usado para programar o chip. + A ferramenta iniciará o filtro automaticamente cada vez que o arquivo TT2 for criado. Para esse propósito, o caminho para + os filtros fit150[n].exe deverão estar especificados nas configurações. + O arquivo JEDEC criado poderá ser aberto e programado diretamente com + + ATMISP + . + + + Por razões legais o filtro fit1502.exe não pode ser distribuído em conjunto com a ferramenta. Contudo, + poderá ser encontrado na pasta WinCupl\Fitters após instalação do + + WinCupl + . + + WinCupl + + está à disposição no site da ATMEL/Microchip. + Em sistemas Linux, os filtros também poderão ser executados por essa ferramenta, se estiver instalado o wine. + + + + + Um circuito poderá ser exportado para VHDL ou Verilog. Um arquivo será gerado contendo a descrição + completa do circuito. Códigos VHDL gerados foram testados com o + Xilinx Vivado + e o simulador de código aberto para VHDL - ghdl. + O código Verilog foi testado com o simulador Icarus Verilog. + + + Se um circuito contiver casos de testes, seus dados serão usados para gerar o teste comportamental em HDL. + Isso poderá ser usado para verificar a correção da função do circuito em uma simulação em HDL. + + + Arquivos adicionais necessários para placas especiais poderão ser criados. No momento, somente as placas + BASYS3, + Mimas + e Mimas V2 + têm suporte. + Um arquivo de restrições será criado contendo as atribuições aos pinos. As descrições dos pinos poderão ser encontradas + nos data sheet das placas, e deverão ser fornecidas, assim como o número do pino para suas entradas e saídas. + + + Na placa BASYS3, se a frequência de clock de um circuito for baixa, um divisor de frequências será incorporado ao código HDL + a fim de dividir o clock da placa para o valor conveniente. + Se a frequência de clock selecionada exceder 37kHz, a unidade MMCM do Artix-7 será usada para a geração de clock. + Isso garantirá que os recursos disponíveis na FPGA para distribuição do clock serão usados. + Isso permitirá que o exemplo de processador possa ser executado a 20MHz, e se quiser, sem o multiplicador, + 30HMz também será possível. + + + Também para as placas Mimas, o Spartan 6 DCM será utilizado para a geração de clock. + + + Se um circuito for executado em uma placa BASYS3, um novo projeto poderá ser criado no Vivado. + O arquivo VHDL gerado e o arquivo de restrições deverão ser acrescentados ao projeto. + Uma vez criado o projeto, a sequência de bits (bitstream) poderá ser gerada e o Gerenciador de Hardware poderá ser usado + para programar a placa BASYS3. + + + Para criar o arquivo de restrições requerido, o circuito deverá conter um campo de texto correspondente a + "Board: BASYS3", "Board: MimasV1" ou "Board: MimasV2". + + + + + + Embora a ferramenta tenha algumas opções para determinar a aparência de um circuito quando esse for incorporado a outro, + em alguns casos poderá ser mais útil indicá-lo por meio de uma formato bem especial para o subcircuito. + Uma demonstração disso poderá ser a forma de se representar uma ALU em um processador incluída em vários exemplos. + Esse capítulo explicará como definir um formato especial para um circuito. + + + A ferramenta não dispõe de um editor para criar um formato especial. Para isso, um pequeno procedimento será necessário + para dar outros formatos ao circuito: primeiro, o circuito será aberto, o que será representado por determinado formato. + Depois, um gabarito SVG será criado para esse circuito. Nesse gabarito, o circuito será representado por um simples + retângulo. Ele também conterá todos os pinos do circuito, representados em azul (entradas) e vermelho (saídas). + Para se verificar qual círculo correponderá a qual pino, conferir o ID do círculo nas propriedades do objeto. + Esse ID estará na forma pino:[nome] ou pino+:[nome]. + Na última forma variante, o pino terá um rótulo, caso tenha sido reimportado. + Se tal rótulo não for desejado, o sinal + poderá ser removido. + + + Esse arquivo SVG poderá então ser editado. O mais adequado a se fazer é abrir o programa fonte + Inkscape disponível gratuitamente. + Os pinos poderão ser movidos livremente, mas aderidos ao ponto mais próximo na grade durante a reimportação. + + + Se arquivos SVG tiverem que ser usados, será mais fácil abrir e criar um gabarito e colar o gráfico existente + nesse via Copiar&Colar. + + + Se o arquivo for salvo, ele poderá ser importado para a ferramenta. O arquivo será lido e todas as informações necessárias + serão extraídas e armazenadas no circuito. Para usos futuros do circuito, o arquivo SVG + não será mais necessário. + + + Uma observação final: SVG é um formato de arquivo muito útil e flexível. + Poderá ser usado para descrever gráficos extremamente complexos. A ferramenta poderá não estar apta para importar todos + os possíveis arquivos SVG sem erros. Se um arquivo não puder ser importado, ou não tiver o aspecto esperado, + alguns experimentos poderão ser necessários antes que o resultado desejado possa ser alcançado. + + + + + Como mover um fio? + Selecionar uma das extremidades com a seleção retangular. Assim se poderá mover o fio usando o mouse. + Também se poderá selecionar um fio usando CTRL + botão do mouse. + + + + Como apagar um fio? + Selecionar uma das extremidades e apertar a tecla DEL ou clicar na lixeira. + Também se poderá selecionar um fio usando CTRL + botão do mouse. + + + + Como mover um componente incluido todos os fios conectados? + Selecionar o componente com a seleção retangular. A seleção deverá incluir todo o componente. + Depois se poderá mover o componente incluindo seus fios usando o mouse. + + + + Há um componente não conectado a um fio, mesmo havendo pinos sobre o fio. + Um pino somente estará conectado a um fio se o fio tiver seu ponto final nesse pino. + + + Se os nomes dos pinos em um circuito forem longos, esse não serão legíveis quando o circuito + for incorporado, o que se poderá fazer? + A largura do bloco poderá ser aumentada usando o item de menu + EditarEditar atribuitos de circuito. + + + Os pinos de um circuito incorporado não estão uma ordem adequada, isso pode ser modificado? + A sequência poderá ser alterada usando-se a entrada de menu EditarOrdenar entradas ou + EditarOrdenar saídas. + + + + Quando a simulação se iniciar, e um fio ficar cinza, o que isso significa? + As cores verde claro e verde esculo são usadas para representar os estados em nível alto e baixo. + A cor cinza significa que o fio está em estado de alta impedância (Z). + + + + Fornecida a tabela-verdade, como calcular as equações booleanas minimizadas? + No menu Análise selecionar o item Sintetizar. Depois, fornecer a tabela-verdade. + Na parte de baixo da janela se poderá encontrar a equação booleana correspondente. Se for indicada mais do que uma + variável dependente, uma nova janela se abrirá para apresentar todas as equações booleanas geradas. + + + + Fornecida a tabela-verdade, mas se houver mais do que uma equação booleana apresentada, + qual delas é a correta? + + A minimização de uma equação booleana poderá resultar em várias equivalentes que descreverão a mesma função. + Todas as mostradas criarão a mesma tabela-verdade. + Poderá haver diferenças dependentes de "don't cares" na tabela-verdade. + + + + Se tiver a tabela-verdade, como criar um circuito que a represente? + No menu Análise selecionar o item Sintetizar. Depois, fornecer a tabela-verdade. + A tabela poderá ser editada mediante uso dos menus Nova ou Adicionar colunas. + No menu Criar se poderá construir o circuito pelo uso do item Circuito. + + + + Como editar o nome de um sinal na tabela-verdade? + Clicar com o botão direito sobre o cabeçalho da tabela para editar o nome. + + + Se tiver a equação booleana, como criar um circuito? + No menu Análise selecionar o item Expressão. Depois, fornecer a expressão. + + + + Como criar uma tabela-verdade para uma equação booleana? + No menu Análise selecionar o item Expressão. Depois, fornecer a expressão. + Em seguida, criar um circuito e de novo no menu Análise no item Análise criar a tabela-verdade. + + + + Como criar um arquivo JEDEC para um dado circuito? + No menu Análise selecionar o item Análise. Depois, no menu Criar na + nova janela escolher o dispositivo correto no submenu Dispositivo. + + + + Ao criar um arquivo JEDEC, como atribuir um número de pino a certo sinal? + Para as entradas e saídas correspondentes se poderá atribuir um número de pino na caixa de diáologo de configuração do mesmo. + + + + Tenho um arquivo JEDEC criado. Como programá-lo para um GAL16v8 ou GAL22v10? + + Para programar tal chip um hardware programador será necessário. + + + + + Iniciar ou parar a simulação. + Abrir a caixa de diálogo para a tabela de medidas. + Executar até haver interrupção + Executar cados de testes + Uma mudança de clock (funcionará se, e somente se, houver um componente de clock simples). + Análise do circuito + Selecionar tudo. + Recortar os elementos selecionados para a área de transferência. + Copiar os elementos selecionados para a área de transferência. + Inserir componentes a partir da área de transferência. + Duplicar a seleção atual sem modificar a área de transferência. + Quando inserir isso, rotacionar os componentes. + Inserir o último componente de novo. + Novo circuito. + Abrir circuito. + Salvar circuito. + Desfazer a última modificação. + Reaplicar a última modificação desfeita. + Programar um diodo ou um FG-FET. + Quando traçar um fio alterar para o modo em diagonal. + Quando traçar uma linha mudar a sua orientação. + Dividir um fio em dois. + Abortar a ação corrente. + Remover os componentes selecionados. + Remover os componentes selecionados. + Aumentar o número de entradas no componente apontado pelo mouse. + Diminuir o número de entradas no componente apontado pelo mouse. + Zoom in + Zoom out + Ajustar ao tamanho + Mostrar ou omitir a exibição hierárquica dos componentes + + + diff --git a/src/test/resources/docu/static_pt_ref.xml b/src/test/resources/docu/static_pt_ref.xml new file mode 100644 index 000000000..ae3b5acbb --- /dev/null +++ b/src/test/resources/docu/static_pt_ref.xml @@ -0,0 +1,565 @@ + + + + + + Digital is a simple simulator used to simulate digital circuits. The logic gates are connected + to each other by wires and the behavior of the overall circuit can be simulated. + The user can interact with the simulation by either pressing buttons or setting + values to the inputs of the circuit. + + + In this way, most of the basic circuits used in digital electronics can be built and simulated. + In the folder examples, users can browse for examples that includes a functional + 16-bit single-cycle Harvard processor. + + + The simulator has two modes of operation: Editing and Simulation mode. + In the editing mode, modifications to the circuit can be performed. Users can add or connect components. + In this mode, simulation is disabled. + The simulation mode is activated by pressing the Start button in the tool bar. + While starting the simulation the circuit is checked for consistency. + If there are errors in the circuit an appropriate message is shown and + the affected components or wires are highlighted. If the circuit is error free, the simulation is + enabled. Now you can interact with the running simulation. + In the simulation mode it is not possible to modify the circuit. To do so you have to activate the + editing mode again by stopping the simulation. + + + + + + As a first example, a circuit is to be constructed with an Exclusive-Or gate. + From the main window, the Components menu allows you to select the various components. + Then they are placed on the drawing panel. This process can be canceled by pressing the ESC key at any + time. Start by selecting an input component. + This can later be controlled interactively by using the mouse. + + + After selection, the first input can be placed on the drawing panel. + The red dot on the input component symbol is a connection point between the component and a wire, which will be + connected later on. + The red color indicates an output. This means that the port defines a signal value or can drive a wire. + + + + In the same way, a second input is added. It is best to place it directly below the first input. + + + After adding the inputs, the Exclusive-Or gate is selected. This gate represents the actual logical + function. + + + + This gate can now also be added to the circuit. It is best to place it in a way that the subsequent + wiring is made as simple as possible. The blue dots indicate the input terminals of the gate. + + + + Now, select an output which could be used to display a signal state or to later pass signals to + an embedding circuit. + + + + This is placed in a way that it can be wired easily. + The output has a blue dot, which indicates an input terminal. + Here you can feed in the value which is then exported. + + + + After all components are selected and in place, use the mouse to wire a connection between the blue and + red dots. Make sure that exactly one red dot is connected to any number of blue dots. + Only the usage of three-state outputs makes it possible to deviate from this rule and to interconnect + several red dots. + If all wires have been drawn, the circuit is complete. + + + + Interaction with the circuit is possible when simulation is started. + This is done by clicking on the play button located in the toolbar. + After starting the simulation, the color of the wires changes and the + inputs and outputs are now filled. Bright green indicates a logical '1' and dark green a logical '0'. + In the figure above, all wires have a '0' value. + + + + By clicking with the mouse, the inputs can be switched. Since the simulation is now active, the + output changes according to the current input states. The circuit behaves like an + Exclusive-Or gate as expected . + + + + To further process the circuit, the simulation must first be stopped. The easiest way to do this is + with the Stop button in the tool bar. Clicking on a component with the right mouse button opens a + dialog which displays the component's properties. The label 'A' can be defined for the first + input via this dialog. + + + + In this way, the labels for the remaining inputs and outputs can be configured. The menu item + Analysis also contains a menu item Analysis. This function performs an analysis of + the current circuit. However, this is only possible if all inputs and outputs are labeled properly. + + + + The truth table of the simulated circuit appears in a new window. Below the table you can find the + algebraic expression associated with the circuit. If there are several possible algebraic + expressions, a separate window will open, showing all possible expressions. + + + + The table dialog has the menu entry K-Map in its main menu. This allows to display the truth + table in the form of a K-map. + + + + At the top of this dialog there is a drop-down list which allows the selection of the desired + expression in the K-map. In this way you can, for example, illustrate how several equivalent + algebraic expressions can result. However, in this example, there is only one minimal expression. + The truth table can also be modified by clicking the K-map. + + + + + All components must be connected via wires. It is not possible to connect two components + by placing them directly next to each other. + + + In addition, there are only connections between an endpoint of a wire and a component. + If a pin of a component is placed in the middle of a wire, no connection is made between the component + and the wire. + Therefore, a wire must actually terminate at each pin which is to be connected. + Even if the tunnel component is used, there must be a wire between the pin and the tunnel element. + + + The component needs to be selected using the rectangular selection tool in order to be moved, + including the connected wires. For moving a component without the connected wires, + select the component using a mouse click. + + + With CTRL-Click a single wire section can be selected to move or delete it. + If the D key is pressed while drawing a wire, a diagonal wire can be drawn. + The key S allows the splitting of a line segment into two segments. + + + + + If a complex circuit is built up, this can quickly become very confusing. To keep track here, + the different parts of a circuit can be stored in different files. This mechanism also makes it + possible to use a subcircuit, which has been created once, several times in a further circuit. + This approach also offers the advantage that the files can be stored independently of each other in a + version control system and changes can be tracked. + + + + As an example, consider a 4-bit adder: First, we built a simple half-adder. This consists of an + XOR gate and an AND gate. The sum of the two bits 'A' and 'B' is given to the outputs 'S' and 'C'. + This circuit is stored in the file halfAdder.dig. + + + + From two half adders a full adder can now be built. To do this, create a new empty file and save the + empty file as fullAdder.dig in the same folder as the half adder. Then the + half adder can be added to the new circuit via the ComponentsCustom menu. + The order of the pins at the package of the half-adder can be rearranged in the half adder in the + menu EditOrder inputs or EditOrder outputs. + The full adder adds the three bits 'A', 'B' and 'Ci' and gives the sum to the outputs 'S' and 'Co'. + + + + In order to check the correct function of the full adder, a test case should be added. In the test case, + the truth table is stored, which should fulfill the circuit. In this way it can be automatically + checked whether this is the case. + + + + The tests can be executed via the test case editor or the test button in the toolbar. + The table cells highlighted in green indicate that the output of the circuit matches + the truth table given in the test case. + + + + Now the full adders can be put together to form a so-called ripple-carry adder. + In this case, the carry output of an addition is forwarded as a carry input to the addition of the + next higher-order bit, just as is usual in pencil-and-paper addition. + This 4-bit adder should be tested for correct function. For this purpose a test case was inserted. + + + + This test case performs a 100% test, which is possible only with relatively simple circuits: all + possible 512 input combinations are applied to the circuit, and it is checked whether the output + of the circuit is correct. + The first line lists the input and output signals. Below this, the input values to be applied and + the output values to be checked are specified in a row, as in a truth table. + In this example, however, 512 lines are required. Entering this would be a tedious and error-prone task. + It is easier and more reliable to automatically generate the required lines. + For this purpose, the variables A and B are each traversed + from 0 to 15. The respective values of A and B are then assigned to inputs 'A[n]' and 'B[n]'. + Then it is checked whether the circuit outputs the value A+B. Then it is checked again with + the carry bit set, in which case A+B+1 must result. + The details of the test syntax are provided by the help dialog. + + + If a circuit is embedded in an other circuit, only the file name of the subcircuit is stored in a + circuit, not the embedded circuit itself. + The corresponding files of + the embedded subcircuits must therefore be found in the file system at runtime of the simulation. + In order to support the various work methods of the users as best as possible and still to avoid a + complex administration of import paths, etc., a somewhat unusual import strategy is implemented. + + + Only the file names of the embedded circuits are stored in a circuits file, not the full path. + If a file needs to be opened, all subfolders are searched for a file of the corresponding name. + If a suitable file is found, it is imported. This process only depends on the file name of the file to + be read, not on its path. Correspondingly, an error message is generated if there are several files of + the same name in different subfolders, since ambiguities then arise. + + + A suitable project structure therefore looks as follows: The root circuit is located in a separate + folder. + All imported circuits must be in the same folder or subfolders. All circuits must have different names, + so it must not happen that there are circuits of the same name in different folders. + + + + + + + During the simulation every logic gate has a propagation delay. Every component found in the library + has the same propagation delay regardless of its complexity. + The AND gate thus has the same propagation delay as the multiplier. + The only exceptions are diodes, switches and splitters which are used to create data buses. + These components have no propagation delay at all. + + + If it's necessary to simulate a gate - e.g. the multiplier - with a longer propagation delay, a delay + gate must be inserted in the circuit right behind the output of the multiplier. + + + If a circuit is included in another parent circuit, the included circuit keeps its timing behaviour. + So if you include a complex circuit which has a large propagation delay because the input signals + has to pass three gates until it reaches the output, this behaviour is conserved while including this + circuit. + There are no additional delays introduced as a result of including a circuit. If not all outputs of a circuit have + the same propagation delay, then this is also the case if it is included in a parent circuit. + In general, including a circuit into an other circuit does not modify its timing behaviour at all. An + included circuit behaves exactly the same way as if all components had been inserted at the same circuit + level. + + + + + + A circuit can be analyzed via the menu entry Analysis. A truth table is generated for purely + combinatorial circuits. This truth table can be edited as desired. + A new circuit can be generated from this truth table after editing. + + + In addition to purely combinatorial circuits, it is also possible to analyze or generate sequential + circuits. + Instead of a simple truth table a so-called state transition table is created. + Each flip-flop thereby appears on the input side and the output side of the state transition table. + In this table, on the right-hand side, you can find the next state, which will + occur after the next clock signal. This next state depends on the current state of the flip-flops as found + at the left-hand side of the table. + For an analysis to be possible, the flip-flops must be named. + + + The following naming convention applies: The following next state of a bit on the right side of the table + is indicated by a lowercase 'n+1'. The corresponding current state is indicated by an appended 'n'. + If there is a state variable 'A', 'An' indicates the current state and 'An+1' indicates the next state. + If, in the truth table on the left and right side, signals are present, which correspond to this pattern + it is assumed that the table is a state transition table, and a sequential circuit is generated instead of + a combinatorial circuit. + + + It should be noted that the circuit to be analyzed may contain only purely combinatorial elements in + addition to the built-in D and JK flip-flops. If a flip-flop is e.g. made from Nor gates, this + circuit is not recognized as a flip-flop and therefore it is not possible to analyse such a circuit. + + + + + + In the circuit generation menu in the truth table there are also functions to generate so-called + JEDEC files. This is a special file format that describes the fuse map of a PLD. + This JEDEC file can be written into a corresponding PLD using a special programmer. + At the moment, circuits of the type GAL16v8 and GAL22v10 or fuse map compatible + devices are supported. + + + + + The chips in the + + ATF150x + + family are simple CPLDs with up to 128 macrocells. They are available in a + PLCC package, which makes them suitable for laboratory exercises: If an IC is destroyed during exercises, + it can simply be replaced. In addition, with the + + ATDH1150USB + + an easy to use, low-cost programmer is available. This programmer is able to program the + + ATF150x + + chips in system using a JTAG interface. + A suitable evaluation board + + (ATF15XX-DK3-U) + + is also available. + The software + + ATMISP + , + which is available on the ATMEL/Microchip website, is required for programming the chips. + + + Unfortunately, the fuse map details are not publicly available so that no suitable fitter for this chip + can be integrated in Digital, as is possible with the GAL16v8 and GAL22v10 chips. + + + Therefore, the fitters fit150[x].exe provided by ATMEL must be used. These programs create a + JEDEC file from a suitable TT2 file which can then be programmed on the chip. Digital + starts the fitter automatically every time a TT2 file is created. For this purpose, the path to the + fit150[n].exe fitters must be specified in the settings. + The created JEDEC file can then be opened and programmed directly with + + ATMISP + . + + + For legal reasons the fitter fit1502.exe can not be distributed with Digital. However, it can be + found in the folder WinCupl\Fitters after installing + + WinCupl + . + + WinCupl + + is available on the ATMEL/Microchip website. + On Linux systems, the fitters can also be executed by Digital if wine is installed. + + + + + A circuit can be exported to VHDL or Verilog. A file is generated which contains the complete description + of the circuit. The generated VHDL code was tested with + Xilinx Vivado + and the open source VHDL simulator ghdl. + The Verilog code is tested with the Verilog simulator Icarus Verilog. + + + If a circuit contains test cases, the test data is used to generate a HDL test bench. This can be used + to check the correct function of the circuit in a HDL simulation. + + + Additional files which are needed by special boards can be created. At present only the + BASYS3 + board and the Mimas boards Mimas + and Mimas V2 + are supported. + A constraints file is created, which contains the assignment of the pins. The description of the pins can + be found in the boards data sheet, and must be entered as a pin number for the inputs and outputs. + + + At a BASYS3 board, if the circuit clock frequency is low, a frequency divider is integrated into the HDL + code to divide the board clock accordingly. + If the clock frequency selected in the circuit exceeds 37kHz, the MMCM unit of the + Artix-7 is used for clock generation. + This ensures that the FPGA resources provided for the clock distribution are used. + This allows the included example processor to run at 20MHz, and if you can do without the + multiplier, 30HMz is also possible. + + + Also at the Mimas-Boards the Spartan 6 DCM is utilized for the clock generation. + + + If a circuit is to run on a BASYS3 board, a new project can be created in Vivado. + The generated VHDL file and the constraints file must be added to the project. + Once the project has been created, the bitstream can be generated and the Hardware-Manager can be used + to program a BASYS3 board. + + + To create the required constraints file, the circuit must contain a text field with the text + "Board: BASYS3", "Board: MimasV1" or "Board: MimasV2". + + + + + + Although Digital has some options that determine the appearance of a circuit when it is embedded in + another, in some cases it may be useful to use a very special shape for a subcircuit. An example is + the representation of the ALU in the processor included in the examples. This chapter explains how to + define such a special shape for a circuit. + + + Digital does not provide an editor for creating a special shape. Instead, a small detour is required + for creating circuit shapes: First, the circuit is opened, which is to be represented by a special shape. + Then an SVG template is created for this circuit. In this template, the circuit is represented by a + simple rectangle. It also contains all the pins of the circuit, represented by blue (inputs) and + red (outputs) circuits. To see which circle belongs to which pin, you can look at the ID of the + circle in the object properties. This ID has the form pin:[name] or pin+:[name]. + In the latter variant, the pin is provided with a label if reimported to digital. + If you do not want such a label, the + can be removed. + + + This SVG file can now be edited. The most suitable is the open source program + Inkscape which is available for free. + The pins can be moved freely, but are moved to the next grid point during the reimport. + + + If existing SVG files are to be used, it is easiest to open the created template and paste the + existing graphic into the template via Copy&Paste. + + + If the file was saved, it can be imported with Digital. The file is read in and all necessary + information is extracted and stored in the circuit. For further use of the circuit, the SVG + file is no longer required. + + + A final remark: SVG is a very powerful and flexible file format. + It can be used to describe extremely complex graphics. The Digital importer is not able to import all + possible SVG files without errors. If a file can not be imported, or does not appear as expected, + some experimentation may be required before the desired result is achieved. + + + + + How to move a wire? + Select one of the end points with the rectangular selection. Then move this point using the mouse. + You can also select a wire with CTRL + mouse button. + + + + How to delete a wire? + Select one of the end points and press DEL or click on the trashcan. + You can also select a wire with CTRL + mouse button. + + + + How to move a component including all the connected wires? + Select the component with the rectangular selection. The selection must include the entire + component. + Then move the component including the wires using the mouse. + + + + There is a component not connected to a wire, even though the pins are on the wire. + A pin is only connected to a wire if the wire has an endpoint at the pin. + + + If the names of the pins in a circuit are long, the names are no longer readable when + the circuit is embedded. What can I do? + The width of the block can be increased using the menu item + EditEdit circuit attributes. + + + The pins in an embedded circuit have an non-optimal order. How can this be changed? + The sequence can be changed using the menu entry EditOrder inputs or + EditOrder outputs. + + + + When the simulation is started, a wire becomes gray. What does that mean? + The colors light green and dark green are used to represent high and low state. + Gray means the wire is in high Z state. + + + + I have a truth table. How to calculate the minimized boolean equations? + In the menu Analysis select the entry Synthesise. Then enter the truth table. + At the bottom of the window you can find the matching boolean equation. If you enter more than one + dependent variable, a new window opens in which all boolean equations are shown. + + + + I have entered a truth table, but there is more then one boolean equation shown. + Which of them is the correct one? + + Minimizing a boolean equation can result in many equations, describing the same function. + Digital shows all of them and they all create the same truth table. + There may be differences depending on the "don't cares" in the truth table. + + + + I have a truth table. How to create a circuit representing the truth table? + In the menu Analysis select the entry Synthesise. Then enter the truth table. + You can edit the table using the New or Add Columns menus. + In the menu Create you can create a circuit using the Circuit item. + + + + How to edit a signal's name in the truth table? + Right click on the name in the table header to edit the name. + + + I have a boolean equation. How to create a circuit? + In the menu Analysis select the entry Expression. Then enter the expression. + + + + How to create a truth table from a boolean equation? + In the menu Analysis select the entry Expression. Then enter the expression. + Then create a circuit and in the menu Analysis use the entry Analysis to create the truth + table. + + + + How to create a JEDEC file from a given circuit? + In the menu Analysis select the entry Analysis. Then in the menu Create in the + new + window choose the correct device in the sub menu Device. + + + + When creating a JEDEC file: How to assign a pin number to a certain signal? + At the corresponding inputs and outputs you can enter a pin number in the settings dialog of the pin. + + + + I have created a JEDEC file. How to program it to a GAL16v8 or GAL22v10? + + To program such a chip a special programmer hardware is necessary. + + + + + Starts or stops the simulation. + Opens the measurement table dialog. + Run to Break + Execute test cases + A single clock step (Works only in a running simulation and only if there is a single + clock component). + + Analysis of the circuit + Select all. + Cuts the selected components to the clipboard. + Copys the selected components to the clipboard. + Inserts the components from the clipboard. + Duplicate the current selection without modifying the clipboard. + While inserting this rotates the components. + Inserts the last inserted component again. + New circuit. + Open circuit. + Save the circuit. + Undo last modification. + Redo the last undone modification. + Programs a diode or a FG-FET. + While drawing a wire switches to the diagonal mode. + While drawing a line flips the orientation. + Splits a single wire into two wires. + Abort the current action. + Removes the selected components. + Removes the selected components. + Increases the number of inputs at the component the mouse points to. + Decreases the number of inputs at the component the mouse points to. + Zoom In + Zoom Out + Fit to size + Show or hide the components tree view + + + \ No newline at end of file