词条 | 全加器 |
释义 | 简介full-adder 用门电路实现两个二进制数相加并求出和的组合线路,称为一个全加器。全加器可以处理低位进位,并输出本位加法进位。 真值表如下Ai为被加数,Bi为加数,相邻低位来的进位数为Ci-1,输出本位和为Si。向相邻高位进位数为Ci 输入 输出 Ai Bi Ci-1 Si Ci 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 逻辑函数Si=Ai⊕Bi⊕Ci-1 Ci=AiBi+Ci-1Ai+Ci-1Bi VERILOG 对全加器的三种建模方法: 1.)结构化描述方式: module FA_struct (A, B, Cin, Sum, Count); input A; input B; input Cin; output Sum; output Count; wire S1, T1, T2, T3; // -- statements -- // xor x1 (S1, A, B); xor x2 (Sum, S1, Cin); and A1 (T3, A, B ); and A2 (T2, B, Cin); and A3 (T1, A, Cin); or O1 (Cout, T1, T2, T3 ); endmodule 该实例显示了一个全加器由两个异或门、三个与门、一个或门构成。S1、T1、T2、T3则是门与门之间的连线。代码显示了用纯结构的建模方式,其中xor 、and、or 是Verilog HDL 内置的门器件。以 xor x1 (S1, A, B) 该例化语句为例:xor 表明调用一个内置的异或门,器件名称xor ,代码实例化名x1(类似原理图输入方式)。括号内的S1,A,B 表明该器件管脚的实际连接线(信号)的名称,其中 A、B是输入,S1是输出。 2.)数据流描述方式: `timescale 1ns/100ps module FA_flow(A,B,Cin,Sum,Count) input A,B,Cin; output Sum, Count; wire S1,T1,T2,T3; assign # 2 S1 = A ^ B; assign # 2 Sum = S1 ^ Cin; assign #2 T3 = A & B; assign #2 T1 = A & Cin; assign #2 T2 = B & Cin ; endmodule 注意在各assign 语句之间,是并行执行的,即各语句的执行与语句之间的顺序无关。如上,当A有个变化时,S1、T3、T1 将同时变化,S1的变化又会造成Sum的变化。 3.)行为描述方式: module FA_behav(A, B, Cin, Sum, Cout ); input A,B,Cin; output Sum,Cout; reg Sum, Cout; reg T1,T2,T3; always@ ( A or B or Cin ) begin Sum = (A ^ B) ^ Cin ; T1 = A & Cin; T2 = B & Cin ; T3 = A & B; Cout = (T1| T2) | T3; end endmodule 全加器的VHDL描述 libriry ieee; use ieee.std_logic.1164.all; Entity full_add is port(a:in std_logic; b:in std_logic; cin:in std_logic; sum:out std_logic; count:out std_logic ); architecture rtl of full_add is begin process(a,b,cin) begin if(a='0' and b'=0' and c= '0') then sum ='0';count = '0'; elsif(a='1' and b'=0' and c= '0') then sum ='1';count ='0'; elsif(a='0' and b'=1' and c= '0') then sum ='1';count ='0'; elsif(a='1' and b'=1' and c= '0') then sum ='0';count ='1'; elsif(a='0' and b'=0' and c= '1') then sum ='1';count ='0'; elsif(a='1' and b'=0' and c= '1') then sum ='0';count ='1'; elsif(a='0' and b'=1' and c= '1') then sum ='1';count ='0'; else sum ='1';count='1'; end if; end process; end rtl; |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。