|
|
1
8
从逻辑和可读性的角度考虑这一点。前两种形式在可读性方面很好,但都不必要地体现了优先级,并将导致更高层次的逻辑。从这两个指标来看,第三种形式也不太妙。最后,没有明显的理由在这里使用一个热编码而不是二进制编码。下面是我如何编写代码的:
//稍后,在“始终”块中:
在这里,我明确地为ALU操作码赋值,避免了“幻数”,使其他人更容易理解发生了什么。我还使用了case语句并应用了一个指令,该指令告诉我的合成工具不能匹配多个表达式,因此不会推断优先级编码器。我没有给中间信号命名(alu_add等),因为这些都是琐碎的操作,但当我想要方便地访问这些信号(例如在波形查看器中模拟后查看它们的值)时,我经常这样做。 this article 从优秀的 Sunburst Design 最后,关于您的问题,“是否最好让代码始终计算可能的答案,然后根据操作码选择答案”——请记住Verilog是一种硬件描述语言。无论如何,本页上的所有实现都在计算所有内容。它们的不同之处在于逻辑性和可读性。看看 this page ,这表明我的实现除了操作本身之外还有1级逻辑,而if-else实现还有3级逻辑。 |
|
|
2
2
前两个将给出相同的逻辑,但您将得到一个闩锁
在所有三个版本中,无论操作码是什么,四个操作中的每一个都会发出咔哒声。这将对权力产生影响。 我认为,为了清晰起见,第一个版本是成功的,在调试时,您可以在波形查看器中获得每个单独的操作。除非时间、面积或功率限制受到影响,否则编写不那么容易阅读的代码是没有意义的。 |
|
|
Ryan · 使用16位DSP的33*33位 7 年前 |
|
|
elmakhloufi assaad · 用vhdl读取二进制文件 7 年前 |
|
|
CJC · VHDL:使用聚合其他对象为多个数据类型赋值 7 年前 |
|
|
Koli · 如何使用VHDL在组合逻辑中并发执行语句? 7 年前 |
|
|
Andreea Dumitru · PIC24的签名扩展指令[关闭] 7 年前 |
|
|
Wad · VHDL块和保护输入-这段代码做什么? 7 年前 |
|
|
Seung Jin Lee · 连接到多个驱动程序或同步描述错误的问题 8 年前 |
|
|
v4ttel · VHDL:除法和十进制表示法 8 年前 |