差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 | 上一修订版 两侧同时换到之后的修订记录 | ||
实验2-2_4位比较器 [2017/03/02 10:56] zhijun |
实验2-2_4位比较器 [2017/03/02 11:04] zhijun |
||
---|---|---|---|
行 5: | 行 5: | ||
===== 1.实验目的 ===== | ===== 1.实验目的 ===== | ||
- | (1)熟悉和掌握FPGA开发流程和Lattice Diamond软件使用方法 | + | * 熟悉和掌握FPGA开发流程和Lattice Diamond软件使用方法 |
- | (2)通过实验理解和掌握比较器原理 | + | |
- | (3)学习用Verilog HDL描述多位比较器级联电路 | + | * 通过实验理解和掌握比较器原理 |
+ | |||
+ | * 学习用Verilog HDL描述多位比较器级联电路 | ||
行 16: | 行 18: | ||
===== 3.实验原理 ===== | ===== 3.实验原理 ===== | ||
- | 1位的比较器有如下性能: | + | 1位的比较器有如下性能: |
- | (1)如果X>Y或者X=Y且Gin=1,那么输出Gout为1; | + | * 如果X>Y或者X=Y且Gin=1,那么输出Gout为1; |
- | (2)如果X=Y且Gin=0和Lin=0,那么输出Eout为1; | + | * 如果X=Y且Gin=0和Lin=0,那么输出Eout为1; |
- | (3)如果X<Y或者X= Y且Lin=1 ,那么输出Lout为1 。 | + | * 如果X<Y或者X= Y且Lin=1 ,那么输出Lout为1 。 |
1位比较器原理图与真值表如下: | 1位比较器原理图与真值表如下: | ||
- | {{ ::bijiaoqiyuanlitu.png?300 |}} | + | {{ ::bijiaoqiyuanlitu.png?600 |}} |
+ | 写一个如下图所示的4位比较器的Verilog程序,我们可以使用1位比较器的Verilog模块,然后使用4个模块实例语句创建这个顶层模块设计。若想增加比较器的大小,需要为增加的X和y的每一位写新的模块例化语句。在Verilog always块中使用for循环语句,就可以很方便地实现任意位比较器。然而,模块实例语句不能用在always模块中,但可以用在任务(task)中。 | ||
+ | Verilog for循环语句的一般形式为 | ||
+ | // | ||
+ | {{ ::foryunju.png?600 |}} | ||
+ | // | ||
+ | 初始分配为循环变量设置初始值。当条件为真时,执行表达式,然后由语句描述的for循环实体执行。之后,增量更新,再执行一次表达式。for循环的实体一直循环执行,直到条件表达式的值为假。如果for循环的实体部分包含多条语句,那么应该放在begin和end之间。 | ||
+ | {{ ::forxunhuan.png?600 |}} | ||
===== 4.Verilog HDL建模描述 ===== | ===== 4.Verilog HDL建模描述 ===== | ||