如何修改本文档

如果您希望将您的页面添加到此文档中,需要将源文件添加到适当的部分。我选择创建一个结构来重新整理文档的各个部分,这并不是严格必要的,但为了清晰性,强烈建议这样做。

本文档使用递归索引树:每个文件夹都有一个特殊的 index.rst 文件,告诉 sphinx 哪个文件存在、以什么顺序将其放入文档树中。

标题约定

Sphinx 非常智能,文档结构是根据您如何使用非字母数字字符(例如:= - ` : ' " ~ ^ _ * + # < >)推导出来的,您只需要保持一致即可。不过,为了保持一致性,我们使用这些约定:

  • = 用于章节标题的前后行

  • = 标题的下划线

  • - 段落的下划线

  • ^ 表示子段落

Wavedrom 的集成

本文档使用了 sphinxcontrib-wavedrom 插件,因此您可以使用 WaveJSON 语法指定时序图或寄存器描述,如下所示:

.. wavedrom::

   { "signal": [
      { "name": "pclk", "wave": "p......." },
      { "name": "Pclk", "wave": "P......." },
      { "name": "nclk", "wave": "n......." },
      { "name": "Nclk", "wave": "N......." },
      {},
      { "name": "clk0", "wave": "phnlPHNL" },
      { "name": "clk1", "wave": "xhlhLHl." },
      { "name": "clk2", "wave": "hpHplnLn" },
      { "name": "clk3", "wave": "nhNhplPl" },
      { "name": "clk4", "wave": "xlh.L.Hx" }
   ]}

你可以得到:

备注

如果您希望 Wavedrom 图出现在 pdf 导出中,则需要使用 “non relaxed” JSON 方言。长话短说,就是没有使用 javascript 代码并使用 " 包围键值(例如 "name" )。

您可以使用相同的语法描述寄存器映射:

{"reg":[
  {"bits": 8, "name": "things"},
  {"bits": 2, "name": "stuff" },
  {"bits": 6}
 ],
 "config": { "bits":16,"lanes":1 }
 }

新章节

如果你想添加一个新的节,你需要在顶部索引中指定新节的索引文件。我建议将文件夹命名为节名称,但这不是必需的; Sphinx 将从索引文件的标题中获取该部分的名称。

示例

我想记录 SpinalHDL 中的新功能,并且我想为其创建一个章节;我们称之为 Cheese

所以我需要创建一个名为 Cheese 的文件夹(名称并不重要),并在其中创建一个索引文件,例如:

======
Cheese
======

.. toctree::
:glob:

introduction
*

备注

.. toctree:: 指令接受一些参数,在本例中 :glob: 使您可以使用 * 包含所有剩余文件。

备注

文件路径是相对于索引文件的,如果要指定绝对路径,需要在前面加上``/``

备注

introduction.rst 将始终是列表中的第一个,因为它是在索引文件中指定的。其他文件将按字母顺序排列。

现在我可以添加 introduction.rst 和其他文件,比如 cheddar.rststilton.rst 等。

剩下要做的唯一一件事就是将 cheese 添加到顶部索引文件中,如下所示:

Welcome to SpinalHDL's documentation!
=====================================

.. toctree::
   :maxdepth: 2
   :titlesonly:

   rst/About SpinalHDL/index
   rst/Getting Started/index
   rst/Data types/index
   rst/Structuring/index
   rst/Semantic/index
   rst/Sequential logic/index
   rst/Design errors/index
   rst/Other language features/index
   rst/Libraries/index
   rst/Simulation/index
   rst/Examples/index
   rst/Legacy/index
   rst/Developers area/index
   rst/Cheese/index

就是这样,现在您可以在 cheese 中添加您想要的所有内容,所有页面都将显示在文档中。