当前位置: 首页 > news >正文

灵璧哪有做网站的网站建设0doit

灵璧哪有做网站的,网站建设0doit,网店开店流程步骤,网站技术解决方案是什么接前文《【学习笔记】4、组合逻辑电路(上)》 4.4.5 算术运算电路 1. 半加器和全加器 半加器和全加器是算术运算电路中的基本单元。半加器和全加器是1位相加的组合逻辑电路。 #xff08;1#xff09;半加器 半加器#xff1a;只考虑两个加数本身#xff0c;不考虑低位进…接前文《【学习笔记】4、组合逻辑电路(上)》 4.4.5 算术运算电路 1. 半加器和全加器 半加器和全加器是算术运算电路中的基本单元。半加器和全加器是1位相加的组合逻辑电路。 1半加器 半加器只考虑两个加数本身不考虑低位进位。 A、B是两个加数 S表示和数 C表示进位 列出真值表 ABCS0000010110011110 逻辑表达式 S A ‾ B A B ‾ A ⊕ B S\overline{A}BA\overline{B}A⊕B SABABA⊕B//异或 C A B CAB CAB 逻辑图 2全加器 全加器加数A加数B以及低位进位 C i C_i Ci​。S表示和数 C o C_o Co​表示进位列出真值表 A加数1B加数2 C i 低位进位 C_i低位进位 Ci​低位进位 C o 进位 C_o进位 Co​进位S和0000001001100011101000101011101011011111 列出逻辑表达式不能直接给出最简形式借助卡诺图。先出现低位C后出现高位A S A ‾ ⋅ B ‾ ⋅ C i A ‾ ⋅ B ⋅ C i ‾ A ⋅ B ‾ ⋅ C i ‾ A B C i A ⊕ B ⊕ C i S\overline{A}·\overline{B}·C_i\overline{A}·B·\overline{C_i}A·\overline{B}·\overline{C_i}ABC_iA⊕B⊕C_i SA⋅B⋅Ci​A⋅B⋅Ci​​A⋅B⋅Ci​​ABCi​A⊕B⊕Ci​//异或 C o A ‾ ⋅ B ⋅ C i A ⋅ B ‾ ⋅ C i A ⋅ B A ⊕ B ⋅ C i A ⋅ B C_o \overline{A}·B·C_iA·\overline{B}·C_iA·BA⊕B·C_iA·B Co​A⋅B⋅Ci​A⋅B⋅Ci​A⋅BA⊕B⋅Ci​A⋅B 2. 多位数加法器 1并行相加串行进位加法 必须在低1位进行完成后才可以进行高1位的加法。先低位相加进位再高位相加。受到进位信号的限制。 2集成4位超前进位加法器 74HC283 考虑到全加器组成的“并行相加串行进位”的缺点设计了新的多位加法逻辑电路。 这里的超前指的是 各个位加法不用等低1位的进位信号提前进行加法。 每位的进位只由加数和被加数决定与低位的进位无关。 前文的全加器逻辑表达式 S A ⊕ B ⊕ C i S A⊕B⊕C_i SA⊕B⊕Ci​ //这里的i表示输入input C o A ⊕ B ⋅ C i A ⋅ B C_o A⊕B·C_iA·B Co​A⊕B⋅Ci​A⋅B//这里的i表示输入input S i A i ⊕ B i ⊕ C i − 1 S_i A_i⊕B_i⊕C_{i-1} Si​Ai​⊕Bi​⊕Ci−1​//i表示当前全加器i-1表示前一个全加器 C i A i ⊕ B i ⋅ C i − 1 A i ⋅ B i C_{i} A_i⊕B_i·C_{i-1}A_i·B_i Ci​Ai​⊕Bi​⋅Ci−1​Ai​⋅Bi​//i表示当前全加器i-1表示前一个全加器 为了只观察进位 C i C_i Ci​定义中间变量 G i A i B i P i A i ⊕ B i G_iA_iB_iP_iA_i⊕B_i Gi​Ai​Bi​Pi​Ai​⊕Bi​,这两个中间变量在计算一开始就已经固定了。 S i P i ⊕ C i − 1 S_i P_i⊕C_{i-1} Si​Pi​⊕Ci−1​ C i P i ⋅ C i − 1 G i C_{i} P_i·C_{i-1}G_i Ci​Pi​⋅Ci−1​Gi​ 这里重点关注 C i P i ⋅ C i − 1 G i C_{i} P_i·C_{i-1}G_i Ci​Pi​⋅Ci−1​Gi​一个迭代函数。 C 0 G 0 P 0 C − 1 C_0 G_0P_0C_{-1} C0​G0​P0​C−1​ C 1 G 1 P 1 C 0 G 1 P 1 ( G 0 P 0 C − 1 ) G 1 P 1 G 0 P 1 P 0 C − 1 C_1 G_1P_1C_{0}G_1P_1(G_0P_0C_{-1})G_1P_1G_0P_1P_0C_{-1} C1​G1​P1​C0​G1​P1​(G0​P0​C−1​)G1​P1​G0​P1​P0​C−1​ C 2 G 2 P 2 C 1 G 2 P 2 ( G 1 P 1 G 0 P 1 P 0 C − 1 ) G 2 P 2 G 1 P 2 P 1 G 0 P 2 P 1 P 0 C − 1 C_2 G_2P_2C_{1}G_2P_2(G_1P_1G_0P_1P_0C_{-1})G_2P_2G_1P_2P_1G_0P_2P_1P_0C_{-1} C2​G2​P2​C1​G2​P2​(G1​P1​G0​P1​P0​C−1​)G2​P2​G1​P2​P1​G0​P2​P1​P0​C−1​ C 3 G 3 P 3 C 2 G 3 P 3 ( G 2 P 2 G 1 P 2 P 1 G 0 P 2 P 1 P 0 C − 1 ) G 3 P 3 G 2 P 3 P 2 G 1 P 3 P 2 P 1 G 0 P 3 P 2 P 1 P 0 C − 1 C_3 G_3P_3C_2G_3P_3(G_2P_2G_1P_2P_1G_0P_2P_1P_0C_{-1})G_3P_3G_2P_3P_2G_1P_3P_2P_1G_0P_3P_2P_1P_0C_{-1} C3​G3​P3​C2​G3​P3​(G2​P2​G1​P2​P1​G0​P2​P1​P0​C−1​)G3​P3​G2​P3​P2​G1​P3​P2​P1​G0​P3​P2​P1​P0​C−1​根据推导我们可以知道当前加法器的进位信号 C i C_i Ci​只和 P i P_i Pi​、 G i G_i Gi​、初始进位信号 C − 1 C_{-1} C−1​有关。 逻辑图。 下图是猜测的74HC283逻辑图。 串联进位级联。 超前进位产生器并不是一个完整的加法器 74LS182 3. 减法运算 补码 N 补码 2 n − N 原码 N_{补码}2^n-N_{原码} N补码​2n−N原码​补码 N 补码 N 反码 1 N_{补码}N_{反码}1 N补码​N反码​1将减法变成加法。 A − B A − ( 2 n − B 补 ) A B 补 − 2 n A B 反 1 − 2 n A-BA-(2^n-B_补)AB_补-2^nAB_反1-2^n A−BA−(2n−B补​)AB补​−2nAB反​1−2n 求4位减法的结果补码 A − B A B 反 1 A-BAB_反1 A−BAB反​1 结果补码 D 3 : 0 ’ A 3 : 0 ( B 3 : 0 ) 反码 1 C o 为进位信号 结果补码D_{3:0}^’ A_{3:0}(B_{3:0})_{反码}1C_o为进位信号 结果补码D3:0’​A3:0​(B3:0​)反码​1Co​为进位信号 求结果的原码 结果原码 D 3 : 0 [ 结果补码 D 3 : 0 ’ C o ] − 2 n [ 结果补码 D 3 : 0 ’ C o ] − 2 4 [ 结果补码 D 3 : 0 ’ C o ] − ( 10000 ) b 结果原码D_{3:0}[结果补码D_{3:0}^’C_o] -2^n[结果补码D_{3:0}^’C_o] -2^4[结果补码D_{3:0}^’C_o] -(10000)_b 结果原码D3:0​[结果补码D3:0’​Co​]−2n[结果补码D3:0’​Co​]−24[结果补码D3:0’​Co​]−(10000)b​已知 结果补码 D 3 : 0 ’ 数值范围是 ( 0000 ) b 到 ( 1111 ) b 结果补码D_{3:0}^’数值范围是(0000)_b到(1111)_b 结果补码D3:0’​数值范围是(0000)b​到(1111)b​。当 C o 1 C_o1 Co​1时bit41, 减去 2 n ( 10000 ) b 2^n(10000)_b 2n(10000)b​,不需要借位异或0。 中间 D 0 ′ ′ D 0 ′ ⊕ 0 D 0 ′ 中间D_0^{}D_0^{}⊕0D_0^{} 中间D0′′​D0′​⊕0D0′​ 中间 D 1 ′ ′ D 1 ′ ⊕ 0 D 1 ′ 中间D_1^{}D_1^{}⊕0D_1^{} 中间D1′′​D1′​⊕0D1′​ 中间 D 2 ′ ′ D 2 ′ ⊕ 0 D 2 ′ 中间D_2^{}D_2^{}⊕0D_2^{} 中间D2′′​D2′​⊕0D2′​ 中间 D 3 ′ ′ D 3 ′ ⊕ 0 D 3 ′ 中间D_3^{}D_3^{}⊕0D_3^{} 中间D3′′​D3′​⊕0D3′​ 结果原码 D 3 : 0 D 3 : 0 ′ ′ A 3 : 0 ′ ′ 结果补码 D 3 : 0 ′ A 3 : 0 B 3 : 0 反码 1 结果原码D_{3:0}D_{3:0}^{}A_{3:0}^{}结果补码D_{3:0}^{}A_{3:0}B_{3:0}{反码}1 结果原码D3:0​D3:0′′​A3:0′′​结果补码D3:0′​A3:0​B3:0​反码1举例$A≥BA0101B0001 公式计算A-BAB_{反码}1-2^4(0101)_b(1110)_b1-(10000)_b(10100)_b-(10000)_b(00100)_b$ //不需要借位电路逻辑 A − B A 3 : 0 B 3 : 0 反码 1 A-BA_{3:0}B_{3:0}{反码}1 A−BA3:0​B3:0​反码1 当 C o 0 C_o0 Co​0时bit40, 减去 2 n ( 10000 ) b 2^n(10000)_b 2n(10000)b​,需要借位异或1。 中间 D 0 ′ ′ D 0 ′ ⊕ 1 ( D 0 ′ ) 反 中间D_0^{}D_0^{}⊕1(D_0^{})_{反} 中间D0′′​D0′​⊕1(D0′​)反​ 中间 D 1 ′ ′ D 1 ′ ⊕ 1 ( D 1 ′ ) 反 中间D_1^{}D_1^{}⊕1(D_1^{})_{反} 中间D1′′​D1′​⊕1(D1′​)反​ 中间 D 2 ′ ′ D 2 ′ ⊕ 1 ( D 2 ′ ) 反 中间D_2^{}D_2^{}⊕1(D_2^{})_{反} 中间D2′′​D2′​⊕1(D2′​)反​ 中间 D 3 ′ ′ D 3 ′ ⊕ 1 ( D 3 ′ ) 反 中间D_3^{}D_3^{}⊕1(D_3^{})_{反} 中间D3′′​D3′​⊕1(D3′​)反​ 结果原码 D 3 : 0 D 3 : 0 ′ ′ A 3 : 0 ′ ′ C − 1 D 3 : 0 ′ 反码 1 ( A 3 : 0 B 3 : 0 反码 1 ) 反码 1 结果原码D_{3:0}D_{3:0}^{}A_{3:0}^{}C_{-1}D_{3:0}^{}反码1(A_{3:0}B_{3:0}{反码}1)_{反码}1 结果原码D3:0​D3:0′′​A3:0′′​C−1​D3:0′​反码1(A3:0​B3:0​反码1)反码​1举例 A B A 0001 B 0101 ABA0001B0101 ABA0001B0101 公式计算 A − B A B 反码 1 − 2 4 ( 0001 ) b ( 1010 ) b 1 − ( 10000 ) b ( 01100 ) b − ( 10000 ) b ( 借位 1 ⋅ 01100 ) b − ( 10000 ) b ( 11100 ) b 直接计算得到的就是 − 4 的补码 A-BAB_{反码}1-2^4(0001)_b(1010)_b1-(10000)_b(01100)_b-(10000)_b(借位1·01100)_b-(10000)_b(11100)_b直接计算得到的就是-4的补码 A−BAB反码​1−24(0001)b​(1010)b​1−(10000)b​(01100)b​−(10000)b​(借位1⋅01100)b​−(10000)b​(11100)b​直接计算得到的就是−4的补码电路逻辑: A − B ( A 3 : 0 B 3 : 0 反码 1 ) 反码 1 ( ( 01100 ) b ) 反码 1 ( 10011 ) b 1 ( 1 ⋅ 0100 ) 也就是绝对值 4 符号 V 借位信号 1 为负 − 4 A-B(A_{3:0}B_{3:0}{反码}1)_{反码}1((01100)_b)_{反码}1(10011)_b1(1·0100)也就是绝对值4符号V借位信号1为负-4 A−B(A3:0​B3:0​反码1)反码​1((01100)b​)反码​1(10011)b​1(1⋅0100)也就是绝对值4符号V借位信号1为负−4 4. 集成算术/逻辑单元 算术逻辑单元ALUArithmetic Logic Unit。既支持算术运算又支持逻辑运算。74LS181是双极型ALU。功能引脚MH时执行逻辑运算功能引脚ML时执行算术运算 4.5 组合可编程逻辑器件 4.5.1 PLD的结构、表示方法及分类 1. PLD的结构 PLD可编程逻辑器件基本组成与阵列、或阵列。 2. PLD的表示方法 早期使用熔丝和二极管一次性编程。可擦除CMOS技术使用浮栅技术。 3. PLD的分类 按照集成度划分 低密度1000以下PROM可编程只读存储器、PLA可编程逻辑阵列、PAL可编程阵列逻辑、GAL通用阵列逻辑高密度1000以上CPLD复杂可编程逻辑器件、FPGA现场可编程门阵列 按照结构体系划分 简单PLD复杂可编程逻辑器件CPLD现场可编程逻辑器件FPGA 按照与或阵列是否可编程划分 PROM与阵列固定或阵列可编程PAL和GAL与阵列可编程、或阵列固定。PLA与阵列、或阵列都可以编程。 4.5.2 组合逻辑电路的PLD实现 任何组合逻辑关系都可以变换成 与或 表达式通过PLD的与、或阵列可以实现任何一个逻辑函数。 1. 可编程逻辑阵列PLA 缺少开发环境支持价格贵。 L 0 A ‾ ⋅ B ‾ ⋅ C A ‾ ⋅ B ⋅ C ‾ A ⋅ B ‾ ⋅ C ‾ A B C L_0 \overline{A}·\overline{B}·C\overline{A}·B·\overline{C}A·\overline{B}·\overline{C}ABC L0​A⋅B⋅CA⋅B⋅CA⋅B⋅CABC L 1 A B A C B C L_1ABACBC L1​ABACBC列出真值表之后可以发现该电路是“全加器”的功能。全加器的逻辑表达式 S A ‾ ⋅ B ‾ ⋅ C i A ‾ ⋅ B ⋅ C i ‾ A ⋅ B ‾ ⋅ C i ‾ A B C i A ⊕ B ⊕ C i S\overline{A}·\overline{B}·C_i\overline{A}·B·\overline{C_i}A·\overline{B}·\overline{C_i}ABC_iA⊕B⊕C_i SA⋅B⋅Ci​A⋅B⋅Ci​​A⋅B⋅Ci​​ABCi​A⊕B⊕Ci​//异或 C o A ‾ ⋅ B ⋅ C i A ⋅ B ‾ ⋅ C i A ⋅ B A ⊕ B ⋅ C i A ⋅ B C_o \overline{A}·B·C_iA·\overline{B}·C_iA·BA⊕B·C_iA·B Co​A⋅B⋅Ci​A⋅B⋅Ci​A⋅BA⊕B⋅Ci​A⋅B 变形 C o A ‾ ⋅ B ⋅ C i A ⋅ B ‾ ⋅ C i A ⋅ B A ‾ ⋅ B ⋅ C i A ⋅ B ‾ ⋅ C i ( A ⋅ B A B C A B C ) 变形C_o \overline{A}·B·C_iA·\overline{B}·C_iA·B\overline{A}·B·C_iA·\overline{B}·C_i(A·BABCABC) 变形Co​A⋅B⋅Ci​A⋅B⋅Ci​A⋅BA⋅B⋅Ci​A⋅B⋅Ci​(A⋅BABCABC)//吸收律 变形 C o A ‾ ⋅ B ⋅ C i A ⋅ B ‾ ⋅ C i ( A ⋅ B A B C A B C ) ( A ‾ ⋅ B ⋅ C i A B C ) ( A ⋅ B ‾ ⋅ C i A B C ) A B B C i A C i A B 变形C_o \overline{A}·B·C_iA·\overline{B}·C_i(A·BABCABC)(\overline{A}·B·C_iABC)(A·\overline{B}·C_iABC)ABBC_iAC_iAB 变形Co​A⋅B⋅Ci​A⋅B⋅Ci​(A⋅BABCABC)(A⋅B⋅Ci​ABC)(A⋅B⋅Ci​ABC)ABBCi​ACi​AB 变形 C o B C i A C i A B 变形C_o BC_iAC_iAB 变形Co​BCi​ACi​AB 2.可编程阵列逻辑PAL 与阵列可编程或阵列固定。已知 逻辑表达式使用PAL与阵列实现该功能。一个 或单元 接三个可编程 与单元。没有使用到的与单元需要全接通简化图是“与单元中画一个大的X”因为正反 与 在了一起该支路逻辑值为0。L3有需要4个或输入硬件受限可以使用L0的输出作为两个输入。 4.6 用Verilog HDL描述组合逻辑电路 HDL硬件描述语言 4.6.1 组合逻辑电路的门级建模 verilog语言内置的12个基本门级元件。 分类元件符号功能说明多输入门and与门多输入门nand与非门多输入门or或门多输入门nor或非门多输入门xor异或门多输入门xnor异或非门----------------------------------------------------------------多输出门buf缓冲器多输出门not反相器----------------------------------------------------------------三态门bufif1三态缓冲器if-如果控制信号为1-高电平输出有效 in-out三态门bufif0三态缓冲器 if-如果控制信号为0-低电平输出有效in-out三态门notif1三态反相器if-如果控制信号为1-高电平输出有效in-out三态门notif0三态反相器if-如果控制信号为0-低电平输出有效 in-out) 1. 多输入门 and、nand、or、nor、xor、xnor 只允许一个输出但允许有多个输入。 多输入门的输出端out不可能为高阻状态z。 列出真值表以2输入为例。 and 与门 i n 1 0 in_10 in1​0 i n 1 1 in_11 in1​1 i n 1 x in_1x in1​x i n 1 z ( 高阻 ) in_1z(高阻) in1​z(高阻) i n 2 0 in_20 in2​00000 i n 2 1 in_21 in2​10out1xx i n 2 x in_2x in2​x0xxx i n 2 z ( 高阻 ) in_2z(高阻) in2​z(高阻)0xxx nand 与非门 i n 1 0 in_10 in1​0 i n 1 1 in_11 in1​1 i n 1 x in_1x in1​x i n 1 z ( 高阻 ) in_1z(高阻) in1​z(高阻) i n 2 0 in_20 in2​0out1out1out1out1 i n 2 1 in_21 in2​1out10xx i n 2 x in_2x in2​xout1xxx i n 2 z ( 高阻 ) in_2z(高阻) in2​z(高阻)out1xxx or 或门 i n 1 0 in_10 in1​0 i n 1 1 in_11 in1​1 i n 1 x in_1x in1​x i n 1 z ( 高阻 ) in_1z(高阻) in1​z(高阻) i n 2 0 in_20 in2​00out1xx i n 2 1 in_21 in2​1out1out1out1out1 i n 2 x in_2x in2​xxout1xx i n 2 z ( 高阻 ) in_2z(高阻) in2​z(高阻)xout1xx xor 异或门 i n 1 0 in_10 in1​0 i n 1 1 in_11 in1​1 i n 1 x in_1x in1​x i n 1 z ( 高阻 ) in_1z(高阻) in1​z(高阻) i n 2 0 in_20 in2​00out1xx i n 2 1 in_21 in2​1out10xx i n 2 x in_2x in2​xxxxx i n 2 z ( 高阻 ) in_2z(高阻) in2​z(高阻)xxxx 2. 多输出门 buf缓冲器、not反相器 只能有一个输入但允许多个输出。 列出1个输出的真值表 buf 缓冲器 i n 0 in0 in0 i n 1 in1 in1 i n x inx inx i n z ( 高阻 ) inz(高阻) inz(高阻)输出out101xx not 反相器 i n 0 in0 in0 i n 1 in1 in1 i n x inx inx i n z ( 高阻 ) inz(高阻) inz(高阻)输出out110xx 3. 三态门 bufif1、bufif0、notif1、notif0 有一个输出一个输入一个控制。 当控制信号为无效时三态门输出高阻状态z。 if1表示高电平时允许输出in-out低电平时输出高阻状态。 if0表示低电平时允许输出in-out高电平时输出高阻状态。 列出真值表 bufif1 缓冲器 控制信号 c t r l 0 控制信号ctrl0 控制信号ctrl0 控制信号 c t r l 1 控制信号ctrl1 控制信号ctrl1 控制信号 c t r l x 控制信号ctrlx 控制信号ctrlx 控制信号 c t r l z ( 高阻 ) 控制信号ctrlz(高阻) 控制信号ctrlz(高阻) 数据输入 i n 0 数据输入in0 数据输入in0outz高阻out0out0或者zout0或者z 数据输入 i n 1 数据输入in1 数据输入in1outz高阻out1out1或者zout1或者z 数据输入 i n x 数据输入inx 数据输入inxoutz高阻xxx 数据输入 i n z ( 高阻 ) 数据输入inz(高阻) 数据输入inz(高阻)outz高阻xxx notif1 缓冲器 控制信号 c t r l 0 控制信号ctrl0 控制信号ctrl0 控制信号 c t r l 1 控制信号ctrl1 控制信号ctrl1 控制信号 c t r l x 控制信号ctrlx 控制信号ctrlx 控制信号 c t r l z ( 高阻 ) 控制信号ctrlz(高阻) 控制信号ctrlz(高阻) 数据输入 i n 0 数据输入in0 数据输入in0outz高阻out1out1或者zout1或者z 数据输入 i n 1 数据输入in1 数据输入in1outz高阻out0out0或者zout0或者z 数据输入 i n x 数据输入inx 数据输入inxoutz高阻xxx 数据输入 i n z ( 高阻 ) 数据输入inz(高阻) 数据输入inz(高阻)outz高阻xxx 4. 举例 (1) Verilog实现2线-4线译码器 2线-4线译码器使用Verilog语言的门级元件进行描述。 2个数据输入A1和A01个使能输入E4个输出Y3个内部节点使用wire定义。关键字定义多个元件时调用名不能省略多个调用名元件之间必须使用逗号分隔。 //门级Gate-Level //2线-4线译码器 2-to-4 line decodermodule _2to4decoder(A1,A0,E,Y);input A,B,E; //定义输入信号output [3:0]Y;//定义输出信号wire A1not,A0not,Enot;//内部节点信号//非门not n1(A1not,A1),n2(A0not,A0),n3(Enot,E);//与非门nand n4(Y[0],A1not,A0not,Enot),n5(Y[1],A1not,A0 ,Enot),n6(Y[2],A1 ,A0not,Enot),n7(Y[3],A1 ,A0 ,Enot);endmodule (2) Verilog实现2选1数据选择器 使用了三态门缓冲器bufif0bufif1。 重点L同时受两路信号驱动。在多驱动元的情况下逻辑值会发生冲突‌从而产生不确定值。‌类似于竞争冒险。 在Verilog中 线网 wire用于表示单个门驱动或连续赋值语句驱动的网络数据类型‌三态线网 tri用来表示多驱动器驱动的网络型数据。‌当没有定义wire和tri的逻辑强度时‌在多驱动元的情况下逻辑值会发生冲突‌从而产生不确定值。‌ //门级Gate-Level //2线-1线数据选择器 2-to-1-line multiplexer module _2to1muxtri(A,B,SEL,L)input A,B,SEL;output L; //定义输出信号tri L;//tri数据类型三态线网多驱动网络类型。bufif1(L,B,SEL);bufif0(L,A,SEL); endmodule 5. 分层次的电路设计方法简介 自顶而下top-down先定义顶层模块再定义顶层模块用到的子模块。 自底向上bottom-up先定义底层的各个子模块再将子模块组合起来构成顶层模块。 1使用门级元件定义底层的半加器。2调用2个半加器一个或门定义一个全加器。3调用4个1位全加器构成顶层的4位全加器。 上层模块调用下层模块时通过模块名完成调用过程调用名不能省略。 调用模块时按照原来端口的排列顺序可以使用一套新的端口也可以使用同名的旧端口。调用模块时按照端口名称对应下层模块端口名称。顺序任意。 . 下层端口 ( 上层端口 ) − . S ( S 1 ) .下层端口(上层端口)-.S(S1) .下层端口(上层端口)−.S(S1) verilog实现4位全加器 非超前进位加法器。底层半加器 //半加器 module halfadder(S,C,A,B)input A,B;output S,C;//和xor(S,A,B);//SA⊕B//进位and(C,A,B);//CAB endmodule2个半加器1个或门1个1位全加器 //全加器 module fulladder(S,CO,A,B,CI)input A,B,CI;output S,CO;wire S1,D1,D2;//计算中间值S1D1halfadder HA1(S1,D1,A,B);//和halfadder HA2(S,D2,S1,CI);//进位or g1(CO,D2,D1); endmodule4个1位全加器1个4位全加器 module _4bit_adder(S,C3,A,B,C_1)input [3:0]A,B;input C_1;output [3:0]S;output C3;wire C0,C1,C2;//内部进位信号fulladder FA0(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); endmodule4.6.2 组合逻辑电路的数据流建模 门级建模太费事工作效率低。使用数据流建模较高的抽象级别描述电路。通过“综合软件”能够自动转换成门级电路。 1. 运算符 大约30个运算符。 类型分类符号功能说明算术运算符双目运算符二进制加算术运算符双目运算符-二进制减算术运算符双目运算符*二进制乘算术运算符双目运算符/二进制除算术运算符双目运算符%求模--------------------------------------------------------关系运算符双目运算符大于关系运算符双目运算符小于关系运算符双目运算符大于等于关系运算符双目运算符小于等于关系运算符双目运算符等于关系运算符双目运算符!不等于关系运算符双目运算符全等于关系运算符双目运算符!不全等于--------------------------------------------------------位运算符双目运算符~按位取反位运算符双目运算符按位与位运算符双目运算符|按位或位运算符双目运算符^按位异或位运算符双目运算符^~ 或 ~^按位同或--------------------------------------------------------缩位运算符单目运算符缩位与缩位运算符单目运算符~缩位与非缩位运算符单目运算符|缩位或缩位运算符单目运算符~|缩位或非缩位运算符单目运算符^缩位异或缩位运算符单目运算符^~ 或 ~^缩位同或--------------------------------------------------------逻辑运算符-!逻辑非逻辑运算符-逻辑与逻辑运算符-||逻辑或--------------------------------------------------------移位运算符双目运算符右移移位运算符双目运算符左移--------------------------------------------------------位拼接运算符-{ , } { { } }将多个操作数拼接成一个操作数--------------------------------------------------------条件运算符三目运算符?:如果真则否则 2.举例 1连续赋值语句 assign verilog语言中基本语句是“连续赋值语句”。针对wire型变量进行赋值。这里的“连续”表示持续性赋值而不是一次性。如下所示只要等式右边逻辑值发生变化会立即被计算出并赋值给左边的变量 wire A,B,SEL,L;//4个连线型变量assign L (A~SEL)|(BSEL);//连续赋值 例如1前文门级实现的2-4译码器重新描述如下 module decoder_df(A1,A0,E,Y);input A1,A0,E;output [3:0]Y;assign Y[0] ~(~A1 ~A0 ~E);//000assign Y[1] ~(~A1 A0 ~E);//010assign Y[2] ~( A1 ~A0 ~E);//100assign Y[3] ~( A1 A0 ~E);//110 endmodule数据流与门级建模对比 例如24位全加器重新实现被加数、加数都是4位的如果发生进位结果可能是5位。用{Cout,SUM}拼接起来Cout接收bit4SUM接收bit[3:0]。 module binary_adder(A,B,Cin,SUM,Cout);input [3:0]A,B;input Cin;output [3:0]SUM;output Cout;assign {Cout,SUM} ABCin; endmodule数据流与门级建模对比 例如32选1数据选择器 使用连续赋值语句 module mux2x1_df(A,B,SEL,L);input A,B,SEL;output L;assign LSEL?A:B; endmodule数据流与门级建模对比 4.6.3 组合逻辑电路的行为级建模 描述数字逻辑电路的功能和算法。 always是一个循环执行语句后面跟着循环执行条件。 在always结构中逻辑表达式就是一种过程赋值语句。 always ( 循环执行的条件 ) //不加分号“;” //括号里的任何一个变量发生变化时都会触发执行后面的过程赋值语句。 //执行完最后一句后执行挂起always语句再次等待变量发生变化。 //因此循环执行条件被称为“敏感变量”。 always ( 敏感变量 ) //敏感变量之间使用关键词or代替逻辑或运算“|”always结构过程赋值语句只能给reg类型的变量赋值。 条件语句if-else 多路分支语句case-endcase 1. 条件语句 condition_expr 一般是 逻辑表达式或者关系表达式condition_expr 0xz时按照“假”处理。condition_expr 1按照“真”处理并执行相应的语句。 if(condition_expr) true_statement; if(condition_expr) true_statement; else fale_statement;if(condition_expr1) true_statement1; else if(condition_expr2)true_statement2; else if(condition_expr3)true_statement3; ...... else default_statement;2. 多路分支语句 先计算case_expr的值。每个分支可以是单条语句也可以是多条语句。多条语句时需要用begin和end包围着构成一个整体顺序语句块。每个分支的表达式的值必须不同。执行完某一个分支后case语句结束。不需要break连续几个分支都执行同样的表达式可以用逗号分隔各个分支表达式将执行语句放在其中最后一个表达式的后面。 case(case_expr) item_expr1: statement1; item_expr2: statement2; ...... default: default_statement;//可以省略 endcase3. 举例 2选1数据选择器。因为过程赋值语句只能给reg数据赋值所以需要把输出L定义成reg类型。 module mux2to1_bh(A,B,SEL,L)input A,B,SEL;output L;reg L; //always (SEL or A or B) //敏感变量任何一个变化都会触发执行if(SEL 1)LB; //if(SEL) LB;else LA; endmodule4选1数据选择器 module mux4to1_bh(A,SEL,E,L)input [3:0]A;input [1:0]SEL;input E;output L;reg L; always ( A or SEL or E) //敏感变量任何一个变化都会触发执行begin if(E1) L0; else case(SEL)2d0: LA[0];2d1: LA[1];2d2: LA[2];2d3: LA[3];endcaseend endmodule
http://www.hkea.cn/news/14465295/

相关文章:

  • 网站开发 技术指标山西网站设计
  • 龙岩网站定制网页视频怎么下载到u盘上
  • 部门门户网站建设的目的成都网络设计公司
  • jq网站登录记住密码怎么做网站开发毕设需求分析
  • 注册网站是哪个部门wordpress 百度翻译插件
  • 百度站长平台查询在线商城网站怎么做
  • 即刻搜索网站提交入口深圳做网站的网络
  • 做网站公司汉狮团队前端自己写代码建网站要花多少钱
  • c 做特产网站黄骅怎么读
  • 长沙正规官网建站怎么制作小视频的教程?
  • 长春专业做网站的公司排名超级优化残剑
  • 网站建设业务开展方案centos 6.5 搭建wordpress
  • 沈阳个人网站建设选择自己做家具展示网站
  • html5个人网站模板专业建站公司联系方式
  • 太原网站建设扁平化网站下载
  • php网站开发源码网站备案有必要吗
  • 做的不错的h5高端网站企业网站推广注意事项
  • 网站交互图片怎么做网站推广的电子邮件推广
  • 福建有没有网站做一件代发如何百度收录我的网站
  • 销售网站建设工资多少外卖小程序源码
  • 哪个做简历的网站可以中英的网页设计的重点和难点
  • 网站开发制作熊掌号wordpress 显示小工具栏
  • 好的手机网站码迷seo
  • 西部数码网站管理助手v3.1合肥门户网站制作建设
  • mvc 手机网站开发做网上商城网站
  • 苏州网站制作计划设备外观设计效果图
  • 类似京东的购物网站开发价格湛江网站seo
  • 生鲜农产品网站建设贵州做网站kuhugz
  • 电子商务网站建设规划设计任务书咨询公司资质
  • 哪里做网站最好网站wordpress如何添加商桥