差别
这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 上一修订版 两侧同时换到之后的修订记录 | ||
实验2-2_4位比较器 [2017/02/27 21:57] zhijun 创建 |
实验2-2_4位比较器 [2017/03/02 11:04] zhijun |
||
---|---|---|---|
行 1: | 行 1: | ||
<WRAP center 60%> | <WRAP center 60%> | ||
- | ====== 实验1.1 基本组合逻辑电路 ====== | + | ====== 实验2.2 4位比较器 ====== |
</WRAP> | </WRAP> | ||
===== 1.实验目的 ===== | ===== 1.实验目的 ===== | ||
- | * 熟悉和掌握FPGA开发流程和Lattice Diamond软件使用方法 | + | * 熟悉和掌握FPGA开发流程和Lattice Diamond软件使用方法 |
- | * 通过实验理解基本门电路 | + | |
- | * 掌握用Verilog HDL数据流基本门电路的方法 | + | * 通过实验理解和掌握比较器原理 |
+ | |||
+ | * 学习用Verilog HDL描述多位比较器级联电路 | ||
===== 2.实验任务 ===== | ===== 2.实验任务 ===== | ||
- | 利用Verilog语言实现不同的2输入基本逻辑门。 | + | 本实验的任务是描述4位的比较器电路,并用for语句和task语句实现比较器电路的级联效果。 |
===== 3.实验原理 ===== | ===== 3.实验原理 ===== | ||
- | 与门,或门,与非门,或非门,异或门,同或门真值如下表所示: | + | 1位的比较器有如下性能: |
- | + | * 如果X>Y或者X=Y且Gin=1,那么输出Gout为1; | |
- | {{ :2选1选择器逻辑单元真值表.png |}} | + | * 如果X=Y且Gin=0和Lin=0,那么输出Eout为1; |
- | + | * 如果X<Y或者X= Y且Lin=1 ,那么输出Lout为1 。 | |
- | 原理图如下所示: | + | 1位比较器原理图与真值表如下: |
- | + | ||
- | {{ :2选1输入电路原理图.png |}} | + | |
+ | {{ ::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建模描述 ===== | ||