Projeto CircuitVerse

Esta página contém os detalhes de um projeto de escrita técnica aceito para a temporada de documentos do Google.

Resumo do projeto

Organização de código aberto:
CircuitVerse
Redator técnico:
dvls
Nome do projeto:
Consolidação e melhorias para livros interativos da CircuitVerse
Duração do projeto:
Duração padrão (3 meses)

Project description

1 Resumo

O CircuitVerse é um projeto de código aberto que tem como objetivo fornecer uma plataforma em que circuitos podem ser projetados e simulados usando uma interface gráfica do usuário baseada na Web. O simulador de lógica pode ser usado para elaborar implementações completas de CPU, embora seja projetado principalmente para uso educacional. Além da documentação técnica do software, um livro interativo on-line orienta o usuário no aprendizado de design de lógica digital. O livro permite que o usuário teste circuitos diretamente dentro do livro para ter uma experiência interativa.

O livro está em um estado inicial de desenvolvimento e não tem algumas seções relevantes. A estrutura geral é flexível em termos de um fluxo que conecta as diferentes seções e requer conteúdo mais detalhado. Além disso, de acordo com a organização, não há diretrizes para ajudar os colaboradores a colaborar no projeto nem um plano ou roteiro para orientar as contribuições sobre quais conteúdos são necessários e com qual prioridade.

O objetivo desta proposta é colaborar com os mentores para criar diretrizes de contribuição, produzir um plano de desenvolvimento de temas e contribuir para melhorar o conteúdo atual, além de criar novos conteúdos de acordo com o plano de desenvolvimento.

2 O estado atual do livro interativo

Desde o lançamento do projeto no Google Summer of Code 2019, ele tem apresentado um "crescimento não gerenciado", com a ajuda da comunidade estudantil. A própria organização do projeto é formada principalmente por desenvolvedores. Por isso, eles fizeram parte do GSoD em busca de ajuda externa para melhorar o Interactive Book. Os desenvolvedores do projeto identificaram que o livro está exigindo a reescrita de algumas seções e a adição de novo conteúdo, além de torná-lo mais detalhado e abrangente. Além disso, a equipe espera ter, após o GSoD, diretrizes para novas contribuições, bem como um "plano mestre" geral para o desenvolvimento do conteúdo.

3 Qual é a contribuição dessa proposta

Esta proposta vai contribuir com a cocriação de uma primeira versão das diretrizes de contribuição, com o objetivo de garantir um processo mais harmônico de colaboração para os colaboradores, levando a um conteúdo mais consistente. Também será delineado um plano de desenvolvimento para os tópicos do livro. As adições e mudanças mais urgentes de acordo com o novo plano de desenvolvimento também serão incluídas.

4 Análise das alternativas disponíveis

Vários projetos de código aberto maduros com características semelhantes já desenvolveram diretrizes de contribuição para a documentação, como Wikibooks ([Help:Contributing], [Wikibooks:Policies e Guidelines]), OpenStreetMap ([Diretrizes de edição organizada]) ou o Projeto de documentação do Linux ([Guia do autor do LDP]). Esses exemplos podem ser usados para criar as diretrizes do projeto com base na experiência de projetos de código aberto bem-sucedidos.

Para o plano de desenvolvimento do tópico, é possível comparar os planos de aula de cursos abertos (por exemplo, [MIT Open Courseware]), bem como livros de referência sobre circuitos de lógica digital, incluindo livros abertos como [Lessons In Electric Circuits -- Volume IV -Digital], [Wikibooks: Digital Circuits] e [Wikibooks: Digital Electronics].

[Help:Contributing] https://en.wikibooks.org/wiki/Help:Contributing

[Wikibooks:Políticas e diretrizes] https://en.wikibooks.org/wiki/Wikibooks:Policies_and_guidelines

[Diretrizes de edição organizada] https://wiki.osmfoundation.org/wiki/Organized_Editing_Guidelines (em inglês)

[Guia do autor do LDP] https://www.tldp.org/LDP/LDP-Author-Guide/html/index.html

[MIT Open Courseware] https://ocw.mit.edu/

[Lições sobre circuitos elétricos -- Volume IV -Digital] https://www.ibiblio.org/kuphaldt/electricCircuits/Digital/index.html

[Wikibooks: circuitos digitais] https://en.wikibooks.org/wiki/Digital_Circuits (em inglês)

[Wikibooks: Eletrônicos digitais] https://en.wikibooks.org/wiki/Digital_Electronics

5 Estrutura da documentação proposta

O livro interativo tem o potencial de ser útil para um público amplo, de estudantes amadores eletrônicos e do ensino médio a estudantes do ensino superior e profissionais que precisam atualizar ou fortalecer as habilidades em circuitos de lógica digital.

Para lidar com a heterogeneidade dos usuários do livro, é proposta uma estrutura de "várias camadas", em que cada camada corresponde ao nível crescente de complexidade e profundidade teórica do conteúdo.

Portanto, a estrutura da documentação cresce em duas dimensões, a primeira dimensão corresponde à sequência lógica ou tradicional de temas em sistemas de lógica digital, enquanto a segunda dimensão representa o nível.

Na lista estruturada a seguir, a estrutura bidimensional proposta está representada. A sequência padrão de temas é apresentada no nível superior. Para simplificar, apenas três camadas de complexidade são definidas para cada tópico, correspondentes aos níveis básico, médio e avançado. O conteúdo relacionado ao tópico geral específico é listado em cada nível.

  • Representação usando números binarty:
    • Nível básico: números binários, quantidades negativas, outras bases, codificação.
    • Nível médio: [sem conteúdo específico]
    • Nível avançado: módulos e anéis
  • Operações matemáticas com números binários:
    • Nível básico: adição, subtração, multiplicação, divisão
    • Nível médio: álgebra booleana, funções booleanas
    • Nível avançado: outras álgebras, decomposição de Shannon
  • Componentes da SSI combinado:
    • Nível básico: símbolos, portas lógicas, tabelas de verdade
    • Nível médio: famílias lógicas, portas universais
    • Nível avançado: comportamento de tempo (modelos de tempo, perigos)
  • Design de lógica combinada:
    • Nível básico: descrição funcional, implementação
    • Nível médio: funções canônicas, k-Maps
    • Nível avançado: variáveis inseridas no mapa, Quine McCluskey, representação de cubos binários
  • Componentes do MSI combinados:
    • Nível básico: MUX, DEMUX, codificador, decodificador, meio-sombreador, somador completo
    • Nível médio: funções baseadas em MUX
    • Nível avançado: [sem conteúdo específico]
  • Componentes da LSI combinado:
    • Nível básico: ROM, ALU
    • Nível médio: PLDs (PLA, PAL, GAL)
    • Nível avançado: [sem conteúdo específico]
  • Componentes da SSI sequencial:
    • Nível básico: travas, chinelos, sinais de relógio, diagramas de tempo
    • Nível médio: feedback de memória, sistemas síncronos, sistemas assíncronos
    • Nível avançado: [sem conteúdo específico]
  • Componentes MSI sequenciais:
    • Nível básico: registros, contadores
    • Nível médio: [sem conteúdo específico]
    • Nível avançado: [sem conteúdo específico]
  • Design sequencial:

    • Nível básico: [sem conteúdo específico]
    • Nível médio: síntese sequencial, FSM (Mealy, Moore), diagramas de estado, minimização de estado, atribuição de estado, disputas
    • Nível avançado: design baseado em MSI, design baseado em LSI, diagramas de fluxo, diagramas de MDS

    O nível básico precisa permitir que os usuários entendam como funcionam os circuitos de lógica digital e como usá-los, sem exigir conhecimento de matemática superior. Ele pode ser adequado para estudantes amadores e do ensino médio. Se esses usuários tiverem as habilidades necessárias e quiserem entender melhor, poderão trabalhar parte ou todo o conteúdo do nível médio.

    O nível médio precisa ter o conteúdo e os requisitos equivalentes a um curso introdutório de ensino superior em um sistema de lógica digital.

    Por fim, o nível avançado inclui conteúdos que geralmente podem ser encontrados em cursos avançados complementares ou opcionais de sistemas digitais em universidades.

    Essa estrutura proposta será discutida com os mentores na fase inicial do projeto (Semana 3), que será usada como uma entrada para traçar um plano de desenvolvimento de tópicos a longo prazo.

    A estrutura proposta pode usar a maioria, se não todo, o conteúdo atual da documentação, que será revisado e estendido ou corrigido de acordo, quando necessário. Além disso, novas seções serão escritas para esse conteúdo que ainda não foram abordadas na documentação atual.

6 metas

  1. Produzir um primeiro rascunho das diretrizes de contribuição para o projeto Interactive Book.
  2. Descreva um desenvolvimento para os tópicos do livro.
  3. Reescrever e reestruturar o conteúdo atual.
  4. Criar novos conteúdos de acordo com o plano de desenvolvimento.

7 Linha do tempo

Semana 1 (de 14 a 20 de setembro) Analise e discuta com os mentores as melhores diretrizes com base nos exemplos de outros projetos, além da experiência adquirida até o momento. Semana 2 (de 21 a 27 de setembro) Escrever o rascunho das diretrizes Semana 3: (de 28 a 4 de outubro) Discutir o rascunho do plano de desenvolvimento do tema com os mentores. Semana 4: (5 a 11 de outubro) crie um plano de desenvolvimento. Semanas 5 a 11 (de 12 a 29 de novembro): escreva as contribuições que consistem em conteúdo reestruturado e tópicos novos. Semana 12: (30 de novembro a 5 de dezembro) envio do relatório do projeto Avaliação do projeto: (3 a 10 de dezembro) - Envio para a avaliação do redator técnico. - Envio de avaliação pelos mentores.

8 Por que o livro interativo da CircuitVerse

Devido à crise global da COVID-19, comecei a procurar recursos on-line que ajudariam meus alunos em um curso de graduação sobre sistemas de lógica digital. Eu defendo as tecnologias de código aberto Free-Libre há várias décadas. Por isso, dou prioridade a esse tipo de projeto. Encontrei o simulador CircuitVerse e decidi que era uma ótima ferramenta para complementar a falta de atividades em laboratório devido às medidas de contenção da COVID-19 da nossa universidade. Enquanto testava o simulador, também encontrei o livro interativo. Embora o conteúdo ainda não fosse suficiente como referência principal para um curso completo sobre sistemas de lógica digital, o conteúdo atual estava correto e fácil de entender, então incluí-o nos recursos de aprendizado.

Como eu estava usando o simulador e o livro com frequência, a organização entrou em contato comigo sobre o GSoD. Vi nessa oportunidade uma oportunidade de contribuir com o projeto diretamente da minha área de especialização.

9 referências

  • [Ajuda do Wikibooks:Contribuição],
  • [Wikibooks:Políticas e diretrizes]
  • [Diretrizes de edição organizada do OpenStreetMap]
  • [Guia do autor do Projeto de documentação do Linux (LDP)]
  • [Plano de aula introdutório de sistemas digitais do MIT Open Courseware]
  • [Aulas sobre circuitos elétricos -- Volume IV - Digital]
  • [Wikibooks: circuitos digitais]
  • [Wikibooks: Eletrônicos digitais]
  • [O projeto de Brochure do Linux]

    [Ajuda do Wikibooks:Contribuição] https://en.wikibooks.org/wiki/Help:Contributing

    [Wikibooks:Políticas e diretrizes] https://en.wikibooks.org/wiki/Wikibooks:Policies_and_guidelines

    [Diretrizes de edição organizada do OpenStreetMap] https://wiki.osmfoundation.org/wiki/Organized_Editing_Guidelines (em inglês)

    [Guia do autor do LDP, na sigla em inglês] https://www.tldp.org/LDP/LDP-Author-Guide/html/index.html (link em inglês)

    [Syllabus do Laboratório de Sistemas Digitais Introdutório do MIT Open Courseware] https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-111- introduction-digital-systems-laboratory-spring-2006/syllabus/

    [Lições sobre circuitos elétricos -- Volume IV -Digital] https://www.ibiblio.org/kuphaldt/electricCircuits/Digital/index.html

    [Wikibooks: circuitos digitais] https://en.wikibooks.org/wiki/Digital_Circuits (em inglês)

    [Wikibooks: Eletrônicos digitais] https://en.wikibooks.org/wiki/Digital_Electronics

    [O projeto Linux Brochure Project] http://lbproject.sourceforge.net/