《Verilog数字系统设计教程》(第4版)第7章思考题及答案

1.为什么在多模块调试的情况下 m o n i t o r 需 要 配 合 monitor需要配合 monitormonitoron和$monitoroff来工作?
m o n i t o r o n 和 monitoron和 monitoronmonitoroff任务的作用是通过打开和关闭监控标志来控制监控任务 m o n i t o r 的 启 动 和 停 止 , 这 样 使 得 程 序 员 可 以 很 容 易 的 控 制 monitor的启动和停止,这样使得程序员可以很容易的控制 monitor使monitor何时发生。 m o n i t o r o n 来 启 动 monitoron来启动 monitoronmonitor时不管 m o n i t o r 参 数 列 表 中 的 值 是 否 发 生 改 变 , 总 是 立 刻 输 出 显 示 当 前 时 刻 参 数 列 表 中 的 值 , 这 用 于 在 监 控 的 初 始 时 刻 设 定 初 始 比 较 值 。 在 默 认 情 况 下 , 控 制 标 志 在 仿 真 的 起 始 时 刻 就 已 经 打 开 了 。 在 多 模 块 调 试 的 情 况 下 , 许 多 模 块 都 调 用 了 monitor参数列表中的值是否发生改变,总是立刻输出显示当前时刻参数列表中的值,这用于在监控的初始时刻设定初始比较值。在默认情况下,控制标志在仿真的起始时刻就已经打开了。在多模块调试的情况下,许多模块都调用了 monitor仿monitor,因为任何时刻只能用一个 m o n i t o r 起 作 用 , 因 此 需 要 配 合 monitor起作用,因此需要配合 monitormonitoron与 m o n i t o r o f f 使 用 , 把 需 要 监 视 的 模 块 用 monitoroff使用,把需要监视的模块用 monitoroff使monitor打开,在监视完毕后及时用 m o n i t o r o f f 关 闭 , 以 便 把 monitoroff关闭,以便把 monitoroff便monitor让给其它模块使用。

2.请用$random配合求模运算编写:
(1)用于测试的跳变沿抖动为周期1/10的时钟波形。
(2)随机出现的脉宽随机的窄脉冲。

module random_pulse(dout);
output[9:0] dout;
reg[9:0] dout;
integer delay;
initial
begin #10 dout=0;
for(k=0;k<100;k=k+1)
begin
delay={$random}%10;
#delay dout=1;
#delay dout=0;
end
end
endmodule

3.Verilog的编译预处理与C语言的编译预处理有什么不同?
Verilog的编译处理,在编译处理命令之前
要以`开头。

4.请仔细阐释timescale编译预处理的作用?
timescale命令用来说明跟在该命令后的模块的时间单位和时间精度。使用`timescale命令可以在同一个设计里包含采用了不同的时间单位的模块。

5.不同`timescale定义的多模块仿真测试时需要注意什么?
如果在同一个设计里,多个模块中用到的时间单位和时间精度单位不同,需要用到以下的时间结构:
(1)用timescale命令来声明本模块中所用到的时间单位和时间精度;
(2)用系统任务 p r i n t t i m e s c a l e 来 输 出 显 示 一 个 模 块 的 时 间 单 位 和 时 间 精 度 ; ( 3 ) 用 系 统 函 数 printtimescale来输出显示一个模块的时间单位和时间精度; (3)用系统函数 printtimescale3time和$realtime及%t格式声明来输出EDA工具记录的时间信息。

6.为什么说系统任务 r e a n m e n 可 以 用 来 产 生 用 于 算 法 验 证 的 及 其 复 杂 的 测 试 用 数 据 流 ? 在 V e r i l o g H D L 程 序 中 有 两 个 系 统 任 务 reanmen可以用来产生用于算法验证的及其复杂的测试用数据流? 在Verilog HDL程序中有两个系统任务 reanmenVerilogHDLreadmemb和 r e a d m e m h , 并 用 来 从 文 件 中 读 取 数 据 到 存 储 器 中 , 这 两 个 系 统 任 务 可 以 在 仿 真 的 任 何 时 刻 被 执 行 使 用 。 复 杂 数 据 可 以 用 C 语 言 产 生 , 存 在 文 件 中 , 用 readmemh,并用来从文件中读取数据到存储器中,这两个系统任务可以在仿真的任何时刻被执行使用。复杂数据可以用C语言产生,存在文件中,用 readmemh,仿使Creadmem取出存入存储器,再按节拍输出,这在验证算法逻辑电路时特别有用。

7.为什么熟练地使用条件编译命令可以使源代码有更大的灵活性,可以使用于不同的实现对象,如不同工艺的ASIC或速度规模不同的FBGA或CPLD,从而为软核的商品化创造条件?
合理地使用条件编译和条件执行预处理可以使测试程序适应不同的编译环境,也可以把不同的测试过程编写到一个统一的测试程序中去,可以简化测试的过程,对于复杂设计的验证模块的编写很有实用价值。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值