myhdl硬件设计语言封装在美味的pygmyhdl包装中。
pygmyhdl的Python项目详细描述
pygmyhdl是一个围绕MyHDL的薄包装。myhdl允许您设计 并使用python模拟数字硬件。侏儒也做同样的事, 但尽量让事情简单一点。把它想象成“训练轮上的myhdl”。 一旦你对侏儒有了足够的经验,你可能会把它抛在一边 直接用我的高密度脂蛋白。没关系,这就是我发明它的原因。
功能
pygmyhdl为myhdl添加了以下功能:
- Wire和Bus类,用于声明单位和多位数字信号。
- Bus对象具有.o和.i属性,用于获取 总线(这是.o属性)和将值驱动到总线(使用.i属性)。
- State对象用于声明有限状态机的状态变量。 每个State对象还将所有定义的状态存储在其s属性中 用于与状态进行比较或更新状态值。
- @chunkdecorator用于指示函数将创建一个或多个 一些逻辑电路。这些片段将隐式地收集到 以后可以模拟和合成的逻辑实例的列表。 (myhdl要求您显式地将逻辑实例存储到python变量中 以便以后可以找到并处理它们。)
- 装饰符@comb_logic和@seq_logic用于声明 分别执行组合逻辑操作和顺序逻辑操作。(这些 几乎与myhdl的@always_comb和@always_seq装饰符相同 但它们有助于逻辑的隐式实例化。)
- 帮助函数用于使用随机测试测试数字设计 向量、详尽的测试向量、用户定义的测试向量或简单的时钟信号。
- myhdlpeek module用于显示 作为波形或表格的逻辑模拟结果。
开始
下面是一些使用pygmyhdl的jupyter笔记本的例子。 不幸的是,github笔记本浏览器没有呈现波形显示 所以您必须下载并在本地运行笔记本,或者单击静态html 链接查看pygmyhdl可以做什么。
- 最快,最简单的现场可编程门阵列闪光灯,有史以来!以下内容: [Notebook1][HTML1]
- 层次和抽象和乌西达,天哪!以下内容: [Notebook2][HTML2]
- 脉冲宽度调制器: [Notebook3][HTML3]
- 街区(公羊)派对!以下内容: [Notebook4][HTML4]
- 没有怪物的FSMS!以下内容: [Notebook5][HTML5]
- 自由软件:麻省理工学院许可证
历史记录
0.0.3(2017-11-05)
- 在pygmyhdl中添加了用于处理有限状态机的状态对象。
0.0.2(2017-09-20)
- 修正了总线对象,所以my_bus.o[m:n]现在调用my_bus(m,n)来获取一个阴影片,而不是创建一个导线数组。
0.0.1(2017-08-30)
- pypi上的第一个版本。