74LS181实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生实验报告
实验名称 用 Verilog HDL 语句实现 74LS181 的功能 实验日期 2013 年 10 月 19 号 学号 姓名 班级 计算机科学与技术一班 一、实验目的与要求 1、了解运算器的组成结构; 2、掌握算术逻辑运算器的工作原理; 3、掌握简单运算器的数据传送通道 4、掌握用 Verilog HDL 实现简单运算器的设计 二、实验原理 74LS181 的逻辑功能表
FPGA/CPLD 目标芯片
PIO39-PIO32 PIO49 PIO48 PIO15-PIO12 PIO11-PIO8 PIO7-PIO4 PIO3-PIO0
键8
键7
键6
键5
键4
键3
键2
键1
实验电路结构图 NO.1
3.连接试验箱,开通电源,进行验证。
五、实验环境与设备
实验软件:Quartus ii 软件 六、实验代码设计(含符号说明)
case(S)
'b0000:
begin
实验设备:实验室试验箱 //端口名
//用 ta,tb 代替~A 和~B //进位
if(M) F=ta; else
begin if(CN){CO,F}=A; else {CO,F}=A+1;
end end 'b0001: begin
if(M) F=~(A|B); else
'b1011: begin if(M) F=A&B; else begin if(CN){CO,F}=(A&B)-1; else {CO,F}=A&B; end end
'b1100: begin if(M) F =1; else begin if(CN){CO,F}=A+A; else {CO,F}=A+A+1; end end
module NS74181(A,B,F,S,CN,CO,M);
input[3:0] A,B;
input[3:0] S;
input
M,CN;
output
CO;
output[3:0] F;
reg[3:0]
F;
reg[3:0]
ta,tb;
reg
CO;
always @(S)
begin
ta=~A;
tb=~B;
没有打上括号,导致在优先级出现问题。 可能是软件的问题,是的 A 和 B 的取反功能无法实现,所以后来才会用 ta 和 tb 代
替 A 和 B 的反。 至此,试验才算完成,在本次试验中,学习到了很多的知识,知道了按照哪种流程完成计
算机组成原理实验,以及学会简单的使用 Verilog HDL 语句。做实验是一个需要很多耐性和 细心的过程,切记不可急躁,有不懂的地方可以向老师和同学请教,有志者事竟成。
begin if(M) F=tb; else begin if(CN){CO,F}=A&(tb)+(A|B); else {CO,F}=A&(tb)+(A|B)+1; end
end 'b0110:
begin if(M) F=A^B; else begin if(CN){CO,F}=(A-B)-1; else {CO,F}=A-B; end
end 'b1001:
begin if(M) F=~(A^B); else begin if(CN){CO,F}=A+B; else {CO,F}=A+B+1; end
end
'b1010: begin if(M) F=B; else begin if(CN){CO,F}=(A|(tb))+(A&B); else F=(A|(tb))+(A&B)+1; end end
8
7
6
5
4
3
2
1
译码器 译码器 译码器 译码器
扬声器
D8
D7
D6
D5
D4
D3
D2源自文库
D1
PIO39 PIO38 PIO37 PIO36 PIO35 PIO34 PIO33 PIO32
D16 D15
HEX HEX HEX HEX
CLOCK9
CLOCK5
CLOCK2
CLOCK0
SPEAKER
PIO19-PIO16 PIO23-PIO20 PIO27-PIO24 PIO31-PIO28
Cn=1 时,输出为 2,Cn=0 时输出为 3. 取 S=0001,A=1,B=E,当 M 取低电位时,若 Cn 为 0,输出结果为 0,且有进位
八,实验过程中出现的问题及处理情况(包括实验现象、原因分析、排故障的方法等) 在本次实验当中首先出现的问题是不知如何锁定引脚,后来在同学的帮助下看懂了
电路结构图,然后按照老师给的引脚对照表进行引脚锁定。 接着又发现有部分功能无法实现,在老师的提醒下,才发现然来是没有取反,以及
if(M) F=0; else
begin if(CN){CO,F}=-1; else {CO,F}=0;
end end 'b0100: begin
if(M) F=~(A&B); else
begin if(CN){CO,F}=A+(A&(tb)); else {CO,F}=A+(A&(tb))+1;
end end 'b0101:
begin if(CN){CO,F}=A|B; else {CO,F}=(A|B)+1;
end end 'b0010: begin
if(M) F=(ta)&B; else
begin if(CN){CO,F}=A|(tb); else {CO,F}=A|(tb)+1;
end end 'b0011: begin
图中,S0 到 S3 是四个控制端,用于选择进行何种运算。M 用于控制 ALU 进行算术
运算还是逻辑运算。 当 M=0 时,M 对进位信号没有任何影响,Fi 值与操作数 Ai,Bi 以及地位向本位进
位 Cn+1 有关,所以 M=0 时进行算术运算。操作数用补码表示,“加”只算术加,运算时考 虑进位;“+”指逻辑加,不考虑进位;减法运算时,减法取反码运算后用加法器实现,结 果输出为 A 减 B 减 1 在最末位产生一个强迫进位(加 1),以得到 A 减 B 的结果。
end 'b0111:
begin if(M) F=A&(tb); else begin if(CN){CO,F}=(A&(tb))-1; else {CO,F}=A&(tb); end
end 'b1000:
begin if(M) F=(ta)|B; else begin if(CN){CO,F}=A+(A&B); else {CO,F}=A+(A&B)+1; end
end 'b1111:
begin if(M) F=A; else begin if(CN){CO,F}=A-1; else {CO,F}=A; end
end
endcase end endmodule
七、实验验证与测试 取 S=0001,输入 A=1,B=1,则当 M 为高电位时,输出结果为 E,当 M 取低电位时,
当 M=1 时,封锁了各位的进位输出 Cn+i=0,因此各位的运算结果 Fi 仅与操作数 Ai, Bi 有关,此时进行逻辑运算。
三、实验内容与步骤 1.根据书 85 面的逻辑功能表编写 Verilog HDL 语句,编译,仿真等步骤。 2.按照模式一电路图结构图设置对应的引脚参数。确认无误后,配置文件下载。
'b1101: begin if(M) F=A|(tb); else begin if(CN){CO,F}=(A|B)+A; else {CO,F}=(A|B)+A+1; end end
'b1110: begin if(M) F=A|B; else begin if(CN){CO,F}=(A|(tb))+A; else {CO,F}=(A|(tb))+A+1; end
相关文档
最新文档