Projeto CircuitVerse

Esta página contém os detalhes de um projeto de redação técnica aceito para a Google Season of Docs.

Resumo do projeto

Organização de código aberto:
CircuitVerse
Redator técnico:
dvls
Nome do projeto:
Consolidação e melhorias do livro interativo do CircuitVerse
Duração do projeto:
Duração padrão (três meses)

Project description

1 Resumo

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

O livro está em um estágio inicial de desenvolvimento e atualmente não tem algumas seções relevantes. A estrutura geral é solta 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 com o 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 tópicos e contribuir com a melhoria do conteúdo atual, bem como criar conteúdo novo de acordo com o plano de desenvolvimento.

2 O estado atual do livro interativo

Desde o início do projeto no Google Summer of Code 2019, ele apresentou um "crescimento descontrolado", com a ajuda da comunidade de estudantes. A organização do projeto é formada principalmente por desenvolvedores, que participaram do GSoD para buscar ajuda externa para melhorar o livro interativo. Os desenvolvedores do projeto identificaram que o livro atualmente exige a reescrita de algumas seções, a adição de novo conteúdo e torná-lo mais detalhado e abrangente. Além disso, a equipe espera ter, após a GSoD, diretrizes para novas contribuições, bem como um "plano mestre" geral para o desenvolvimento de conteúdo.

3 Qual é a contribuição desta proposta

Essa proposta vai contribuir com a cocriação de uma primeira versão das diretrizes de contribuição, com o objetivo de garantir um processo de colaboração mais harmonioso para os colaboradores, levando a conteúdos mais consistentes. Um plano de desenvolvimento para os tópicos do livro também será descrito. As adições e alterações mais urgentes de acordo com o novo plano de desenvolvimento também serão contribuí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 and guidelines]), OpenStreetMap ([Organised Editing Guidelines]) ou o Projeto de Documentação do Linux ([LDP Author Guide]). 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 currículos de cursos abertos (por exemplo, [MIT Open Courseware]) e livros de referência sobre circuitos lógicos digitais, 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://pt.wikibooks.org/wiki/Wikibooks:Policies_and_guidelines

[Diretrizes de edição organizada] https://wiki.osmfoundation.org/wiki/Organised_Editing_Guidelines

[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

[Wikibooks: Digital Electronics] 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, que varia de amadores de eletrônica e estudantes do ensino médio a estudantes do ensino superior e profissionais que precisam atualizar ou fortalecer as habilidades em circuitos lógicos digitais.

Para abordar a heterogeneidade dos usuários do livro, uma estrutura "multicamadas" é proposta, em que cada camada corresponde a um 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 tópicos em sistemas lógicos digitais, enquanto a segunda dimensão representa o nível.

Na lista estruturada a seguir, a estrutura bidimensional proposta é representada. A sequência de tópicos padrão é apresentada no nível mais alto. Para simplificar, apenas três níveis de complexidade são definidos para cada tópico, correspondendo aos níveis básico, intermediário e avançado. Para cada nível, os conteúdos relacionados ao tema geral específico são listados.

  • Representação usando números binários:
    • Nível básico: números binários, quantidades negativas, outras bases, codificação.
    • Nível médio: [nenhum 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 combinacionais de SSI:
    • 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 no tempo (modelos de temporização, perigos)
  • Projeto de lógica combinacional:
    • Nível básico: descrição funcional, implementação
    • Nível intermediário: funções canônicas, mapas k
    • Nível avançado: variáveis inseridas no mapa, Quine McCluskey, representação de cubos binários
  • Componentes MSI combinados:
    • Nível básico: MUX, DEMUX, codificador, decodificador, semisomador, somador completo
    • Nível médio: funções baseadas em MUX
    • Nível avançado: [sem conteúdo específico]
  • Componentes combinacionais de LSI:
    • Nível básico: ROM, ALU
    • Nível médio: PLDs (PLA, PAL, GAL)
    • Nível avançado: [sem conteúdo específico]
  • Componentes sequenciais de SSI:
    • Nível básico: travas, circuitos biestáveis, 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: [nenhum 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 intermediário: síntese sequencial, FSM (Mealy, Moore), diagramas de estado, minimização de estado, atribuição de estado, condições de corrida
    • Nível avançado: design baseado em MSI, design baseado em LSI, diagramas de fluxo, diagramas MDS

    O nível básico precisa permitir que os usuários entendam como os circuitos de lógica digital funcionam e como usá-los, sem exigir conhecimento de matemáticas avançadas. Assim, ele pode ser adequado para amadores e alunos do ensino médio. Se esses usuários tiverem as habilidades necessárias e quiserem entender melhor o assunto, eles poderão trabalhar com todo ou parte do conteúdo do nível intermediário.

    O nível médio precisa ser equivalente em conteúdo e requisitos a um curso introdutório de nível superior em 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 entrada para esboçar um plano de desenvolvimento de tópico de longo prazo.

    A estrutura proposta pode usar a maioria, senão todos, os conteúdos atuais da documentação, que serão revisados e estendidos ou corrigidos conforme necessário. Além disso, novas seções serão escritas para os conteúdos que ainda não estão cobertos pela documentação atual.

6 metas

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

7 Cronograma

Semana 1: (14 a 20 de setembro) Analise e discuta com os mentores as melhores diretrizes com base em outros exemplos de projetos, bem como na experiência obtida até o momento. Semana 2: (21 a 27 de setembro) Escreva o rascunho das diretrizes Semana 3: (28 de setembro a 4 de outubro) Discuta o rascunho do plano de desenvolvimento do tema com os mentores. Semana 4: (5 a 11 de outubro) Escreva o plano de desenvolvimento. Semanas 5 a 11: (12 de outubro a 29 de novembro) Escreva as contribuições, que consistem em conteúdo reestruturado e novos tópicos. 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 da avaliação do redator técnico. - Envio de avaliação dos mentores.

8 Por que o livro interativo do CircuitVerse

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

Como eu estava usando o simulador deles e agendou bastante agendamento, a organização entrou em contato comigo para falar sobre o GSoD. Vi uma oportunidade de contribuir com o projeto diretamente da minha área de especialização.

9 Referências

  • [Wikibooks Help:Contributing],
  • [Wikibooks:Policies and guidelines]
  • [OpenStreetMap Organised Editing Guidelines]
  • [Guia do autor do Projeto de documentação do Linux (LDP, na sigla em inglês)]
  • [MIT Open Courseware Introductory Digital Systems Laboratory Syllabus]
  • [Lições sobre circuitos elétricos - Volume IV - Digital]
  • [Wikibooks: Circuitos digitais]
  • [Wikibooks: Digital Electronics]
  • [The Linux Brochure Project]

    [Wikibooks 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 do OpenStreetMap] https://wiki.osmfoundation.org/wiki/Organised_Editing_Guidelines

    [Guia do autor do Projeto de documentação do Linux (LDP, na sigla em inglês)] https://www.tldp.org/LDP/LDP-Author-Guide/html/index.html (em inglês)

    [MIT Open Courseware Introductory Digital Systems Laboratory Syllabus] https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-111-introductory-digital-systems-laboratory-spring-2006/syllabus/

    [Lessons In Electric Circuits -- Volume IV -Digital] https://www.ibiblio.org/kuphaldt/electricCircuits/Digital/index.html

    [Wikibooks: Circuitos digitais] https://en.wikibooks.org/wiki/Digital_Circuits

    [Wikibooks: Digital Electronics] https://en.wikibooks.org/wiki/Digital_Electronics

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