计算机学院 数字逻辑实验的要求
计算机学院 数字逻辑实验 实验要求 : 一.所有实验都是设计型的实验: 所有实验都不会提供设计好的原理图. 计算机系基本不做验证型的实验 . 是由提出需要解决的问题,由同学根据自己所掌握 的知识 ,针对解决问题目的进行设计;调试并完成实验论证. (进行方案设计时,同学之间可以相互讨论,可以比较设计方案,以求达到最简化的设计)
二. 每个 实验内容要求用多种方法设计: 即 ① TTL电路原理图的设计形式.*1 ② 用GAL芯片,编写GAL方程的设计方式.*2 ③ 用FPGA可编程芯片,编写VerilogHDL描述语言的设计方式.*3 以上三种都是当前硬件设计常用的方式,尤其是混合设计方式,因此我们必须加以掌握.*4 (做实验的时候可选用其中一种方式,但实验报告需要三种设计方法)
三。每个实验都是涵盖多个内容概念综合型的实验 所有实验都会密切结合计算机基础方面内容进行安排,实验的内容将覆盖数字逻辑全书的主要的章节典型电路
2011年计算机学院 数字逻辑实验内容的安排
实验内容的安排: 1。预习实验:代码转换(10进制—8421码) 这个实验不记成绩,不写实验报告。作为第一次熟悉和了解实验的环境和三种方法设计而安排的 正式的实验内容安排: 2.四位海明校验码的逻辑设计实验 (本实验是一种综合性实验,这个实验内含译码器的内容;奇偶电路;总线的概念;寄存器容) 3十六进制译码计数器的设计 (GAL型实验) 4.脉冲分频,分配组合逻辑电路的设计 (这个实验应含触发器的应用,计数器的设计;移位寄存器的的设计及多种脉冲产生的方式)
5.八位数据串入—并出逻辑设计实验 (本实验要求掌握和了解移位寄存器;并行寄存器和计数器的灵活应用,分析典型逻辑电74164功能和使用方法,了解收发之间的通信约定应用,为开拓自己的设计思路和能力提供参考。) 6.十六位运算器的设计 (初步了解全加器;运算器的基本构成原理,了解74181典型逻辑的原理,了解芯片与芯片之间的串行进位问题,为提高运算器的速度还需分析74182的并行进位功能。在实验中注意观察串/并进位的时间差。为后续实验奠定基础) 7. 2KX8存贮器的设计 了解存贮器的基本构成,掌握扩大存贮器容量和存贮器字长的设计方法,了解2114芯片基本功能。)
三种设计方法的射击举例
举例一, 用TTL电路的设计方法: 熟悉TTL电路的特点, 了解典型 电路的性能 掌握TTL电路的应用
TTL电路 双列直插
TTL电路贴片形状
74系列芯片功能大全 7400 TTL 2输入端四与非门 7401 TTL 集电极开路2输入端四与非门 7402 TTL 2输入端四或非门 7403 TTL 集电极开路2输入端四与非门 7404 TTL 六反相器 7405 TTL 集电极开路六反相器 7406 TTL 集电极开路六反相高压驱动器 7407 TTL 集电极开路六正相高压驱动器 7408 TTL 2输入端四与门 7409 TTL 集电极开路2输入端四与门 7410 TTL 3输入端3与非门
74160 TTL 可预置BCD异步清除计数器 74161 TTL 可予制四位二进制异步清除计数器 74162 TTL 可预置BCD同步清除计数器 74163 TTL 可予制四位二进制同步清除计数器 74164 TTL 八位串行入/并行输出移位寄存器 74165 TTL 八位并行入/串行输出移位寄存器 74166 TTL 八位并入/串出移位寄存器 74169 TTL 二进制四位加/减同步计数器 74180 TTL 9位奇数/偶数发生器/校验器 74181 TTL 算术逻辑单元/函数发生器 74185 TTL 二进制—BCD代码转换器
7400 TTL 2输入端四与非门
74LS02芯片
以 半加器电路为例: S = A⊕B C = A · B
*1注释举例:TTL电路原理图? 就是用TTL芯片设计构成的逻辑电路如
TTL电路
考虑到第一个实验,要熟悉实验的很多情况,熟悉了解TTL电路的的特点. 因此这是一个非常简单的实验,算是预习实验, 不需要写实验报告. 实验一. 10进制 --- 8421码的转换电路 考虑到第一个实验,要熟悉实验的很多情况,熟悉了解TTL电路的的特点. 还要尽量减少手插线的数量. 因此这是一个非常简单的实验,算是预习实验, 不需要写实验报告.
大规模可编程逻辑器件(P简称PLD),实际上可编程逻辑器件可分为低密度和高密度或称简单和复杂的两种 。 EPLD(Erasable Programmable Logic Device)可擦除的可编程逻辑器件 CPLD(Com-plex programmable gate array)复杂可编程逻辑阵列, FPGA(Field programmable Gate Array)在线可编程逻辑阵列,
举例二: GAL芯片的设计法 了解可编程芯片的特点 掌握GAL芯片应用方法 掌握GAL方程的设计方式
GAL芯片
*2注释举例: 第二种设计方法 GAL设计法: GAL16V8D
Gal管脚输入输出的规定
以 半加器电路为例: S = A⊕B C = A · B PLD16V8 书写器件名称 BASIC GATES 文件名或逻辑功能 XDP 2000.6.18 编者姓名,时间 SHIYAN LATTICE V4.6 用途公司版本等 四行统称标题行是必要有的。 A B NC NC NC NC NC NC NC GND 这一行为定义输入脚 NC S C NC NC NC NC NC NC VCC 定义输出脚 ;LOGIC EQUATIONS 分号打头的仅为注释行,在汇编时将被忽略。 C= A.B S = A*/B+/A*B DESCRIPTION 结束句的关键词
PLD16V8 书写器件名称 BASIC GATES 文件名或逻辑功能 XDP 2000.6.18 编者姓名,时间 SHIYAN LATTICE V4.6 用途公司版本等 四行统称标题行是必要有的。 B C D E M N P Q H GND 这一行为定义输入脚 I J Z Y X W V U A VCC 定义输出脚 ;LOGIC EQUATIONS 分号打头的仅为注释行,在汇编时将被忽略。 U = /A V = B*C W = D+E X = /M+/N / Y = P*/Q+/P*Q Z = /H+/I+/J DESCRIPTION 结束句的关键词
这个简单的基本门逻辑小程序就编写完了,然后再转换生成.JED檔,再通过和微机相连的GAL编程器将上面的编的程序写入GAL16V8芯片即可。 不过值得一提的是: 凡是在编程时没有用到的输入输出脚,一律用NC加以标注 每个输入输出脚名字不能超过8个 每个表达式中的或相不能超过8个 每个表达式中的与相不能超过64个 输入端不够用时,可用输出脚作输入用,但输入脚不可作输出用 输入端最多可达16个,输出端最多可达8个,15,16脚只能作输出用。 当设计时序逻辑电路时,第一脚必须接CLOCK时钟源 第11脚不能作输出脚,通常接地.
介绍到这里,我们的第二个实验就有了: 用GAL芯片设计第二个实验电路: 实验二. 设计一个16进制译码器, 要能从 1----F.要正逻辑输出,A---F标准显示.
举例三: FPGA设计方法
*3注释FPGA可编程芯片:
今年要求用 Verilog HDL语言进行硬件描述设计。 举例如下
module convert //Module 模块名(同文件名)(所有入出信号引脚名表) (D0,D1,D2,D3,D4,D5,D6,D7,D8,D9, //输入信号引脚定义 B1,B2,B4,B8); //定义输出信号引脚 /*input pin:表示pin引脚信号为1位输入信号; *output pin: pin引脚信号为1位输出信号; *inout pin: pin引脚信号为1位输入输出双向信号 *input[3:0] pin :表示pin为4位输入引号,output和inout类似; *在下面的这个例子中,D0~9和B1~4均为一位的信号 */ input D0,D1,D2,D3,D4,D5,D6,D7,D8,D9; output B1,B2,B4,B8; //连续赋值方式:assign 信号/变量 = 逻辑表达式; //例如:assign B1=D1;则表名输出信号B1等于输入信号D1, assign B8=D9|D8; assign B4=D4|D5|D6|D7; assign B2=D2|D3|D6|D7; assign B1=D1|D3|D5|D7|D9; endmodule //与module匹配的:module ......endmodule
下面介绍的是VHDL硬件描述语言
USE ieee.std_logic_1164.all; -- 库使用库说明 Entity add is -- 实体部分 例:VHDL描述语言: S cout X Y CIN LIBRARY ieee; USE ieee.std_logic_1164.all; -- 库使用库说明 Entity add is -- 实体部分 Port (x,y,cin :in bit; -- 输入信号端 全加器
S,cout:out bit); -- 输出信号端 End add; --实体结束 Architecture adder of add is -- 结构体部分 begin process(x,y,cin) -- 进程语句 Begin s <= x XOR y XOR cin; cout <= (x AND y) OR ( x AND cin) OR( y AND cin); --逻辑语句部分 end process; --进程结束 End adder ; --结构体结束
例二.2-4多路选择器为例 LIBRARY ieee; USE ieee.std_logic_1164.all; entity sjxz is port ( a,b,c,d,s0,s1 : in bit; z : out bit ); end sjxz; architecture sjxzex of sjxz is begin process(s0,s1) IF s1=0&s0=0 THEN z<=a; ELSIF s1=0&s0=1 THEN
z<=b; ELSIF s1=1&s0=0 THEN z<=c; ELSE z<=d; END IF; end process; end sjxzex;
用VHDL语言描述数据选择器: 74ls153
可编程芯片与VHDL描述语言大致介绍到此. 现在我们遇到问题是:
实验三 . 四位海明校验逻辑电路 一个实验要建立多个概念: 总线, 存贮器. 奇偶, 译码. 纠错
提示: 数据: I4 I3 I2 I1 校验位: m ≥ lnn +1 (m:数据位 n:校验位) 因此 P3 P2 P1 又 : 依 2°原则,将校验位插入数据位行内 111 110 101 100 011 010 001 I4 I3 I 2 P3 I1 P2 P1 校验码: P1= I4 ⊕ I2 ⊕ I1 异或式 P2 = I4 ⊕ I3 ⊕ I1 P3= I4 ⊕ I 3 ⊕ I2
海明码: S3= I4 ⊕I3 ⊕I2 ⊕P3 S2= I4 ⊕I3 ⊕I1 ⊕P2 S1= I4 ⊕I2 ⊕I1 ⊕P1 由 S3 S2 S1 0 0 0 无错 0 0 1 1 1 1
实验四. 时序脉冲分频分配延迟与整形电路
实验五:异步串行接收-并行输出数据转换逻辑电路 要求设计 实现接受 8位数据串入并出逻辑电路。注意节拍的设计 要有通信约定, 约定接受码 10000001 停止码 01111110。 要注意控制逻辑的设计,注意冒险尖脉冲冒险。
i. 数据输入: 将数据串行输入系统中.对于本实验,以八位数据为基准.即对输入的数据分隔,每八位作为一个整体将其输出. ii. 数据输出: 当输入的数据满足一定条件时将其每八位并行输出一次.这其中数据需满足的条件是:数据组合必须是每八位组合一次,并且当数据处于接收状态. iii. 数据控制: 将输入的数据同样按八位读取,当读取到某一特定串行输入数据序列时,控制器处于开启 状态,表示接受数据输入.当输入的八位数据为另外一个特定的串行输入数据序列时,控制器处于关闭状态.并且在这时候控制数据输出是否将串行输入的数据并行输出.由于数据必须满足上述两个条件,所以数据控制部分可分为两个小模块来完成.一部分用于判定数据的输入序列是否为特定的序列.另一个模块用于对串行输入的数据进行计数,看是否已输入八位. 本实验中,自己约定两个特定的序列. "10000001"表示控制器开启,即读取数据开始,开始工作。相反地, "01111110"表示控制器关闭,即读取数据结束,停止工作。
实验设计: 根据实验的原理及要求,可以将整个系统分为三个模块来设计. 数据输入模块:以时钟信号为基础,将时钟信号作为输入,通过高低电平的控制,实现串行输入 数据的序列.此时需将所输入的数据存储在一个存储器中,以便用于后面的输 出工作. 数据控制模块:将数据输入模块所输入的数据输出作为数据控制模块的输入数据序列.根据 实验原理及要求部分所述,将”10000001”作为数据控制模块的开启信息.此时 表示数据的读取状态.而”01111110”作为数据控制模块的关闭信息,表示数据读取结束.这两个状态是相反的,可用一个D触发器来获得最终的控制结果. 此时还需要作另外一个判断,即串行输入的数据序列是否已满8位.因此需要 一个计数器来对已输入的数据序列进行计数.当已有8位时,数据控制模块的逻辑值应为1,即将把串行输入的8位数据并行输出. 数据输出模块.:由于在数据输入模块中已经将数据存储在了一个存储器中,若此时数据输出 模块接收到数据控制模块的逻辑值为1的信息,那么数据模块将把存储在存 储器的数据8位并行输出.否则,数据输出模块将不输出数据.
时序的设计
16位运算器ALU的设计要求 掌握算术逻辑运算器单元ALU(74LS181)的工作原理 ALU能主要完成对二进制信息定点整数的算术运算,逻辑运算主要有逻辑与、逻辑或、逻辑异或和逻辑非操作 了解提前进位74LS182芯片的逻辑公式推导 进位可采取串行进位与并行进位两种方式
实验目的: 1。掌握算术逻辑运算器单元ALU(74LS181)的工作原理
实验要求: 控制不同运算方式,并列表记录运算结果,本次实验要求是M=H时十六种;M=L时,F=减1,A 减B减1,A加B,A加A,A减1,A加1,A减B,A加B加1,计24种。
实现如下功能,在波形图上得以表示
74181功能表:高电位有效
加法可以有超前加法进位和串行加法等工作方式,74181提供了这些接口,为了实现这两种不同的加法方式,需要74182和74157两个芯片,74182的功能表如下:
74LS182功能表
连接: 74181有高电平和低电平两种工作方式,高电平方式采用原码输入输出,低电平方式采用反码输入输出。通常选用高电平方式。高电平方式74181函数表可见附录。图3-5是74181的逻辑符号,其中:M:算术 / 逻辑运算选择输入 M=0 算术运算 M=1 逻辑运算Cn:带或不带进位运算选择输入 Cn=0 带进位 Cn=1 不带进位S3~S0: 函数选择输入 A3~A0: 4位被加数输入B3~B0: 4位加数输入F3~F0: 4位函数输入Cn+4: 进位输出 Cn+4 =0 有进位出Cn+4 =1 无进位出 图3-5 74181逻辑符号A=B: 为1表示被加数和加数相同 OC门输出,需外接拉高电阻X、Y: 级联输出。用多片74181和74182构造全并行运算器时此两信号接入74182当需用4片74181构造16位运算器时,为避免组与组(即片与片)之间的串行进位(又称行波进位)、提高运算速度,可采用先行进位发生器74182来实现16位全并行运算器