推荐答案
测试一下
题目
下列描述代码可综合的是
A fork... join
B assign/deassign
C if ... else和case
D repeat和forever
参考答案与知识点
参考答案
正确答案是 C。可综合的代码是指能够被综合工具(如Synplify、DC等)转换为实际硬件电路(如门级网表)的RTL描述。在Verilog中,条件语句 if...else 和 case 是标准的可综合语句,常用于描述组合逻辑(如多路选择器)和时序逻辑(如状态机)。而其他选项:A fork...join 是并行语句块,用于仿真中创建并发进程,综合工具通常不支持;B assign/deassign 是过程连续赋值,用于对reg类型变量进行持续赋值,仅用于仿真,不可综合;D repeat 和 forever 是循环语句,repeat 用于仿真中重复执行固定次数,forever 用于无限循环,这些循环通常没有实际硬件对应(除特定情况如for循环可综合外),因此不可综合。易错点:考生可能误认为 fork...join 可综合为并行寄存器,或认为 repeat 可综合为计数器,但实际综合工具只支持有限的循环模式(如for循环的迭代次数必须为常数)。因此,正确答案为 C。
涉及知识点
- 可综合代码的定义与要求
- Verilog 中可综合语句与不可综合语句区分
- if...else 与 case 语句的硬件对应
- fork...join 的仿真特性与不可综合性
- assign/deassign 仅用于仿真
- repeat 与 forever 不可综合的原因