简单组合逻辑数值比较器76课件讲解.pptx

简单组合逻辑数值比较器76课件讲解.pptx

简单组合逻辑

数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;实验工程创建完毕;接下来建立源文件,进行代码编写;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;接下来进行源代码编写;(1)第一种使用always进行组合逻辑的编写;简单组合逻辑---数值比较器;其次,使用组合逻辑,对输出信号进行赋值。

写关键词always@(*)

括号内是敏感条件。

*通配符,表示,任何一个信号只要有电平变化,都要执行这条语句。

*相当于(AorB)这两个中重要有一个变化,就要执行这条语句。

;always进行组合逻辑赋值的一个大体结构。如果只有一条,beginend可以省略。;(2)第一种使用case进行组合逻辑的编写;简单组合逻辑---数值比较器;ctrl+s进行保存,对代码进行更新,vivado会对更新的代码进行一个语法问题的查找。

当前没有报错,说明语法是正确的。;接下来进行仿真代码编写;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;简单组合逻辑---数值比较器;开始测试仿真文件代码编写;仿真文件就是要对被仿真的模块进行一个输入信号的模拟;简单组合逻辑---数值比较器;第2种:;always#100in1={};

#表示延时100个时间单位,100ns

{$random}%2将产生的随机数对2进行求余,即每隔10ns对A进行赋值,赋值是一个随机数。可能是0可能是1.;进行实例化,也就是在仿真文件中调用被仿真的文件。;电路RTL简明电路图分析;2位数值比较器;该模块实现了一个2位数据比较器,功能说明如下:

输入:两个2位二进制数data1和data2

输出:2位结果result,编码规则为:

2b00:表示data1等于data2

2b01:表示data1大于data2

2b10:表示data1小于data2

代码通过case语句枚举了所有可能的输入组合(共16种),并将其归类到三种比较结果中,实现了两个2位数据的大小比较功能。;第一种仿真:;第二种仿真:;这是一个用于测试comparer2模块的测试平台(Testbench)

?通过两个always块周期性地生成随机输入信号,间隔为100ns

?随机值生成方式存在小问题:{$random}%2只能产生0或1(1位),赋值给2位的data_1和data_2时,高位始终为0,实际只能测试部分输入组合

?没有添加$monitor或$display语句,仿真时需要通过波形窗口观察信号变化

?没有结束仿真的$finish语句,仿真会一直运行下去,需要手动停止

如果要更全面地测试comparer2模块,建议修改随机数生成部分,使其能产生完整的2位随机值,例如:{$random}%4。;增强可读性与调试便利性

添加?$monitor?语句,不仅打印信号值,还通过条件判断将?result_1?编码(00/01/10)转换为直观的文字描述(相等/大于/小于),无需手动对照编码规则。

增加?$display?和?$finish,设置固定仿真时长(5000ns),避免仿真无限运行,同时打印结束信息。

完善仿真流程

初始化后添加?#20?延迟,让信号从不定态(x)稳定到初始值(00),避免仿真启动时的无效日志。

新增波形文件导出功能($dumpfile/$dumpvars),可在Modelsim、Vivado等工具中打开?.vcd?文件,可视化分析信号时序和逻辑正确性。

保证激励的全面性

原代码中?{$random}%4?逻辑正确(可生成2位所有组合:00-11),保留该部分,但通过独立的?always?块让?data_1?和?data_2?完全随机独立,覆盖所有16种输入组合的概率更高。;1.运行仿真后,仿真日志会实时输出每行信号变化,例如:

plaintext;$monitor?是Verilog中用于实时监控信号变化并打印信息的系统函数,常用于仿真调试,能在指定信号发生变化时自动输出相关信息。;$time:返回当前仿真时间,单位由?times

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档