1、4 6用VerilogHDL描述组合逻辑电路 4 6 1组合逻辑电路的门级建模 4 6 2组合逻辑电路的数据流建模 4 6 3组合逻辑电路的行为级建模 用VerilogHDL描述组合逻辑电路有三种不同抽象级别 VerilogHDL描述的电路是该电路的VerilogHDL模型 4 6 1组合逻辑电路的门级建模 门级建模 将逻辑电路图用HDL规定的文本语言表示出来 即调用Verilog语言中内置的基本门级元件描述逻辑图中的元件以及元件之间的连接关系 基本门级元件模型 多输入门 多输出门 三态门 Verilog基本门级元件 Verilog基本门级元件 1 多输入门 只允许有一个输出 但可以有多个输入
2、 andA1 out in1 in2 in3 X 不确定状态 Z 高阻态 2 多输出门 允许有多个输出 但只有一个输入 notN1 out1 out2 in bufB1 out1 out2 in 2 多输出门 允许有多个输出 但只有一个输入 notN1 out1 out2 in bufB1 out1 out2 in 3 三态门 有一个输出 一个数据输入和一个输入控制 如果输入控制信号无效 则三态门的输出为高阻态z 4 设计举例 Gate leveldescriptionofa2 to 4 linedecodermodule 2to4decoder A1 A0 E Y inputA B E ou
3、tput 3 0 Y wireA1not A0not Enot notn1 A1not A1 n2 A0not A0 n3 Enot E nandn4 Y 0 A1not A0not Enot n5 Y 1 A1not A0 Enot n6 Y 2 A1 A0not Enot n7 Y 3 A1 A0 Enot endmodule 试用Verilog语言的门级元件描述2线 4线译码器 4 设计举例 Gate leveldescriptionofa2 to 4 linedecodermodule 2to4decoder A1 A0 E Y inputA B E output 3 0 Y wire
4、A1not A0not Enot notn1 A1not A1 n2 A0not A0 n3 Enot E nandn4 Y 0 A1not A0not Enot n5 Y 1 A1not A0 Enot n6 Y 2 A1 A0not Enot n7 Y 3 A1 A0 Enot endmodule 试用Verilog语言的门级元件描述2线 4线译码器 例2用Verilog的门级元件进行描述由三态门构成的2选1数据选择器 Gate leveldescriptionofa2 to 1 linemultiplexermodule 2to1muxtri A B SEL L inputA B SEL
5、outputL triL bufif1 L B SEL bufif0 L A SEL endmodule 5 分层次的电路设计方法简介 4位全加器的层次结构框图 分层次的电路设计 在电路设计中 将两个或多个模块组合起来描述电路逻辑功能的设计方法 设计方法 自顶向下和自底向上两种常用的设计方法 modulehalfadder S C A B inputA B outputS C Instantiateprimitivegatesxor S A B and C A B endmodule Gate levelhierarchicaldescriptionof4 bitadder Descripti
6、onofhalfadder Descriptionof1 bitfulladdermodulefulladder S CO A B CI inputA B CI outputS CO wireS1 D1 D2 内部节点信号 InstantiatethehalfadderhalfadderHA1 S1 D1 A B halfadderHA2 S D2 S1 CI org1 CO D2 D1 endmodule Descriptionof4 bitfulladdermodule 4bit adder S C3 A B C 1 input 3 0 A B inputC 1 output 3 0 S
7、outputC3 wireC0 C1 C2 内部进位信号 InstantiatethefulladderfulladderFA0 S 0 C0 A 0 B 0 C 1 FA1 S 1 C1 A 1 B 1 C0 FA2 S 2 C2 A 2 B 2 C1 FA3 S 3 C3 A 3 B 3 C2 endmodule 4 6 2组合逻辑电路的数据流建模 数据流建模能在较高的抽象级别描述电路的逻辑功能 通过逻辑综合软件 能够自动地将数据流描述转换成为门级电路 VerilogHDL的运算符 位运算符与缩位运算的比较 A 4 b1010 B 4 b1111 对同一个操作数的重复拼接还可以双重大括号构
8、成的运算符 例如 4 A 4 b1111 2 A 2 B C 8 b11101000 作用是将两个或多个信号的某些位拼接起来成为一个新的操作数 进行运算操作 位拼接运算符 设A 1 b1 B 2 b10 C 2 b00 则 B C 4 b1000 A B 1 C 0 3 b110 A B C 3 b101 8 b11000101 一般用法 condition expr expr1 expr2 条件运算符 是三目运算符 运算时根据条件表达式的值选择表达式 首先计算第一个操作数condition expr的值 如果结果为逻辑1 则选择第二个操作数expr1的值作为结果返回 结果为逻辑0 选择第三个
9、操作数expr2的值作为结果返回 2 数据流建模举例 连续赋值语句的执行过程是 只要逻辑表达式右边变量的逻辑值发生变化 则等式右边表达式的值会立即被计算出来并赋给左边的变量 注意 在assign语句中 左边变量的数据类型必须是wire型 数据流建模使用的基本语句是连续赋值语句assign 该语句用于对wire型变量进行赋值 它由关键词assign开始 后面跟着由操作数和运算符组成的逻辑表达式 2选1数据选择器的连续赋值描述是 wireA B SEL L 声明4个连线型变量assignL A 连续赋值 Dataflowdescriptionofa2 to 4 linedecoder module
10、decoder df A1 A0 E Y inputA1 A0 E output 3 0 Y assignY 0 A1endmodule Dataflowdescriptionof2 to 1 linemultiplexermodulemux2x1 df A B SEL L inputA B SEL outputL assignL SEL A B endmodule 用条件运算符描述了一个2选1的数据选择器 在连续赋值语句中 如果SEL 1 则输出L A 否则L B 4 6 3组合逻辑电路的行为级建模 行为级建模就是描述数字逻辑电路的功能和算法 一般使用always结构 后面跟着一系列过程赋值
11、语句 给reg类型的变量赋值 if condition expr1 true statement1 elseif condition expr2 true statement2 elseif condition expr3 true statement3 elsedefault statement 1 条件语句 if语句 条件语句就是根据判断条件是否成立 确定下一步的运算 if condition expr true statement if condition expr true statement elsefale statement Verilog语言中有3种形式的if语句 if后面的条
12、件表达式一般为逻辑表达式或关系表达式 执行if语句时 首先计算表达式的值 若结果为0 x或z 按 假 处理 若结果为1 按 真 处理 并执行相应的语句 是一种多分支条件选择语句 一般形式如下 case case expr item expr1 statement1 item expr2 statement2 default default statement default语句可以省略 2 多路分支语句 case语句 Behavioraldescriptionof2 to 1 linemultiplexermodulemux2to1 bh A B SEL L inputA B SEL outp
13、utL regL defineregistervariablealways SELorAorB if SEL 1 L b 也可以写成if SEL L B elseL A endmodule 例 Behavioraldescriptionof4 to 1 linemultiplexermodulemux4to1 bh A SEL E L input 3 0 A input 1 0 SEL outputL regL always AorSELorE beginif E 1 L 0 elsecase SEL 2 d0 L A 0 2 d1 L A 1 2 d2 L A 2 2 d3 L A 3 endcaseendendmodule