华中科技大学数字逻辑实验小设计.docx
- 文档编号:628779
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:11
- 大小:834.60KB
华中科技大学数字逻辑实验小设计.docx
《华中科技大学数字逻辑实验小设计.docx》由会员分享,可在线阅读,更多相关《华中科技大学数字逻辑实验小设计.docx(11页珍藏版)》请在冰豆网上搜索。
华中科技大学数字逻辑实验小设计
数字电路与逻辑设计
课程小设计
题目:
简单运算器运算电路设计
专业:
计算机科学与技术
班级:
CS1409
学号:
U201414813
姓名:
唐礼威
指导教师:
徐老师
一、设计题目
每位同学自选下列题目之一。
(1)时序信号发生器设计
(2)地址译码电路设计
(3)自选(内容要求参见
(1)、
(2))
二、设计内容要求
2.1、简单运算器设计
用Verilog实现一个满足设计要求的简单运算器的运算电路。
2.1.1设计要求
设计一个能实现两种算术运算和两种逻辑运算的4位运算器。
参加运算的4位二进制代码分别存放在4个寄存器A、B、C、D中,要求在选择变量控制下完成如下4种基本运算:
(1)实现A加B,显示运算结果并将结果送寄存器A;
(2)实现A减B,显示运算结果并将结果送寄存器B;
(3)实现A与C,显示运算结果并将结果送寄存器C;
(4)实现A异或D,显示运算结果并将结果送寄存器D。
2.1.2功能描述
根据设计要求,为了区分4种不同的运算,需设置2个运算控制变量。
设运算控制变量为S1和SO,可列出运算器的功能,如表1所示。
根据功能描述可得出运算器的结构框图,如图1所示。
整个电路可由传输控制电路、运算电路、显示电路3部分组成。
S1
S0
功能
说明
0
0
A+B→A
A加B,结果送至A
0
1
A-B→A
A减B,结果送至A
1
0
A·B→C
A与C,结果送至C
1
1
A⊕B→D
A异或D,结果送至D
简单运算功能说明表
运算器的结构框图
由简单运算器的结构图可知其由传输控制电路、运算电路和运算结果显示电路三个大部分构成,其中运算电路又由算术运算电路、逻辑运算电路构成。
这次设计主要是利用Verilog语言设计运算器中运算电路部分。
2.1.3电路设计
运算电路的逻辑电路图如下:
由运算电路的逻辑电路图可以看出运算器中的逻辑关系,运算器主要由一片74LS283芯片和4个寄存器及8个异或门和4个与门构成。
由运算电路逻辑电路图可以初步构思设计个子模块的功能。
但是仅有运算电路的逻辑电路图还不够,还需要整体运算器的逻辑电路图才能确定各个子模块的输入与输出关系。
运算电路的完整逻辑电路图如下:
可以看到运算电路逻辑图只是其中一部分,其中74LS283芯片功能为超前进位的全加器,可以将它设计为一个加法器模块。
由以上的分析,知该设计主要要解决的问题:
主模块的设计、寄存器模块的设计、加法器模块的设计、仿真验证。
由此写出程序代码如下:
功能代码:
`timescale1ns/1ps
//主模块
moduleJDYS(CIN,S1,S0,CP,A,B,C,D,F);
inputCIN,S1,S0,CP;
input[3:
0]A;
input[3:
0]B;
input[3:
0]C;
input[3:
0]D;
outputreg[3:
0]F;
wire[3:
0]xnor1;
wire[3:
0]and1;
wire[3:
0]xnor2;
wire[3:
0]r1;
wire[3:
0]r2;
wire[3:
0]r3;
wire[3:
0]r4;
wire[3:
0]a;
wireaout;
parameterW=1'b1
xor(xnor1[0],r1[0],r4[0]),
xor(xnor1[1],r1[1],r4[1]),
xor(xnor1[2],r1[2],r4[2]),
xor(xnor1[3],r1[3],r4[3]);
xor(xnor2[0],r2[0],CIN),
xor(xnor2[1],r2[1],CIN),
xor(xnor2[2],r2[2],CIN),
xor(xnor2[3],r2[3],CIN);
registerX1(W,A[3],A[2],A[1],A[0],W,W,W,W,CP,r1[3],r1[2],r1[1],r1[0]),
registerX2(W,B[3],B[2],B[1],B[0],W,W,W,W,CP,r2[3],r2[2],r2[1],r2[0]),
registerX3(W,C[3],C[2],C[1],C[0],W,W,W,W,CP,r3[3],r3[2],r3[1],r3[0]),
registerX4(W,D[3],D[2],D[1],D[0],W,W,W,W,CP,r4[3],r4[2],r4[1],r4[0]);
addX5(CIN,r1,xnor2,a,aout);
and(and1[0],r1[0],r3[0]),
and(and1[1],r1[1],r3[1]),
and(and1[2],r1[2],r3[2]),
and(and1[3],r1[3],r3[3]);
always@(*)
begin
case({S1,S0})
2'b00:
begin
F<=a;
end
2'b01:
begin
F<=a;
end
2'b10:
F<=and1;
2'b11:
F<=xnor1;
endcase
end
endmodule
//加法器模块
moduleadd(cin,x,y,z,fc);
inputcin;
input[3:
0]x;
input[3:
0]y;
outputreg[3:
0]z;
outputregfc;
reg[3:
0]c;
always@(cin,x,y,z,fc)
begin
z[0]=x[0]^y[0]^cin;
c[0]=((x[0]^y[0])&cin|x[0]&y[0]);
z[1]=x[1]^y[1]^c[0];
c[1]=((x[1]^y[1])&c[0]|x[1]&y[1]);
z[2]=x[2]^y[2]^c[1];
c[2]=((x[2]^y[2])&c[1]|x[2]&y[2]);
z[3]=x[3]^y[3]^c[2];
fc=((x[3]^y[3])&c[2]|x[3]&y[3]);
end
endmodule
//寄存器模块
moduleregister(FCLR,D,C,B,A,DR,DL,S1,S0,CP,Q4,Q3,Q2,Q1);
inputFCLR,D,C,B,A,DR,DL,S1,S0,CP;
outputregQ4,Q3,Q2,Q1;
parameterW=1,F=0;
initial{Q4,Q3,Q2,Q1}=4'b0000;
always@(posedgeCP)
if(!
FCLR)
{Q4,Q3,Q2,Q1}=0;
elseif((~S1)&(~S0))
{Q4,Q3,Q2,Q1}<={Q4,Q3,Q2,Q1};
elseif(S1&S0)
{Q4,Q3,Q2,Q1}<={D,C,B,A};
elseif((~S1)&S0&DR)
{Q4,Q3,Q2,Q1}<={1,Q3,Q2,Q1};
elseif((~S1)&S0&(!
DR))
{Q4,Q3,Q2,Q1}<={0,Q3,Q2,Q1};
elseif(S1&(~S0)&DL)
{Q4,Q3,Q2,Q1}<={Q3,Q2,Q1,W};
elseif(S1&(~S0)&(~DL))
{Q4,Q3,Q2,Q1}<={Q3,Q2,Q1,F};
Endmodule
仿真程序
`timescale1ns/1ps
moduleJDYS_tb(
);
regCIN,S1,S0,CP;
reg[3:
0]A;
reg[3:
0]B;
reg[3:
0]C;
reg[3:
0]D;
wire[3:
0]F;
JDYSDUT(.A(A),.B(B),.C(C),.D(D),.S1(S1),.S0(S0),.CP(CP),.CIN(CIN),.F(F));
initial
begin
A=4'd12;B=4'd11;C=4'd2;D=4'd8;S1=0;S0=0;CIN=0;CP=1;
#10
S1=0;
S0=1;
CIN=1;
CP=0;
#10
S1=1;
S0=0;
#10
S1=1;
S0=1;
#10
A=4'd5;
B=4'd7;
C=4'd5;
D=4'd1;
S1=0;
S0=0;
CIN=0;
CP=1;
#10
S1=0;
S0=1;
CIN=1;
CP=0;
#10
S1=1;
S0=0;
#10
S1=1;
S0=1;
#10
A=4'd0;
B=4'd15;
C=4'd4;
D=4'd8;
S1=0;
S0=0;
CIN=0;
CP=1;
#10
S1=0;
S0=1;
CIN=1;
CP=0;
#10
S1=1;
S0=0;
#10
S1=1;
S0=1;
#10;
end
endmodule
运算电路电路图:
运算电路仿真波形图:
参考文献:
[1]欧阳星明、于俊清等.《数字逻辑》(第四版)华中科技大学出版社,http:
//www.hustp.com
Welcome!
!
!
欢迎您的下载,
资料仅供参考!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华中科技大学 数字 逻辑 实验 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)