济南大学EDA大作业.docx
《济南大学EDA大作业.docx》由会员分享,可在线阅读,更多相关《济南大学EDA大作业.docx(12页珍藏版)》请在冰点文库上搜索。
济南大学EDA大作业
电子设计自动化
大作业
题目加法器和减法器
学院自动化与电气工程学院
班级电传1102班
姓名刘长颖
学号20110321122
目录
一设计要求4
二总体设计5
2.1总体结构图5
2.1.1外部端口示意图5
2.1.2总体结构图5
2.2各模块功能5
2.2.1运算控制5
2.2.2进位指示5
2.2.3运算数据输入6
2.2.4运算结果显示6
2.2.5运算控制6
三单元模块设计7
3.1运算控制7
3.1.1端口定义7
3.1.2verilog运算控制模块程序7
3.1.3运算控制框图7
3.1.4运算控制模块仿真结果8
3.2进位指示8
3.2.1端口定义8
3.2.2verilog进位指示模块程序8
3.2.3进位指示框图9
3.2.4进位指示模块仿真结果9
3.3预置数据输入9
3.3.1端口定义9
3.3.2verilog预置数据输入模块程序9
3.3.3预置数据输入框图10
3.3.4运算数据输入模块仿真结果10
3.4运算结果显示11
3.4.1端口定义11
3.4.2verilog运算控制模块程序11
3.4.3运算结果显示框图11
3.4.3运算结果显示模块仿真结果12
3.5运算12
3.5.1端口定义12
3.5.2运算模块程序12
3.5.3运算框图13
3.5.4运算仿真结果13
四整体组装14
4.1总框图14
一设计要求
构造一个四位二进制加法器和一个四位二进制减法器,完成各自的功能仿真。
利用四个按键输入四位加数(或减数)和被加数(或被减数)。
用七段数码管显示四位和(或差),用一只发光二极管指示进位(或借位)信号。
利用个开关控制,确定是四位二进制加法器还是一个四位二进制减法器。
二总体设计
2.1总体结构图
2.1.1外部端口示意图
图1外部端口示意图
2.1.2总体结构图
总体结构分为运算控制、运算数据输入、进位指示、运算、运算结果显示这五个部分。
各个部分的关系如图2总体结构图所示。
图2总体结构图
2.2各模块功能
2.2.1运算控制
使用按键控制值所涉及的电路是进行加法运算还是减法运算。
2.2.2进位指示
当进行加法运算时,如果运算结果有进位,则指示灯亮,否则指示灯亮。
2.2.3运算数据输入
通过一个按键的控制控制所输入的数据时正对加法运算还是减法运算。
2.2.4运算结果显示
将当前运算(加法或者减法)结果显示在数码管上。
2.2.5运算控制
对运算规则进行控制,对当前的运算是加法运算和还是减法运算。
三单元模块设计
3.1运算控制
3.1.1端口定义
moduleCOTUROL(clk,key,shezhi);
clk为输入的系统时钟信号,key为输入运算法则的显示信号,shezhi为输出的结构标志信号。
3.1.2verilog运算控制模块程序
moduleCOTUROL(clk,key,shezhi);
inputclk;
outputshezhi;
inputkey;
regshezhi_r;
always@(key)
begin
if(key==1)//控制进行加法运算还是减法运算
shezhi_r=1;
else
shezhi_r=0;
end
assignshezhi=shezhi_r;
endmodule
3.1.3运算控制框图
图3运算控制框图
3.1.4运算控制模块仿真结果
图4运算控制仿真图
3.2进位指示
3.2.1端口定义
moduleJINWEI(c_tmp,led,clk,shezhi);clk为输入的系统时钟信号,c_temp为输入的运算结果参数,led为运算结果的进位指示信号,shezhi为运算判断信号的输出端口。
3.2.2verilog进位指示模块程序
moduleJINWEI(c_tmp,led,clk,shezhi);
inputclk;
outputled;//进位指示
inputshezhi;
input[4:
0]c_tmp;
regled_r;
always@(posedgeclk)
begin
if(shezhi==1)
begin
if(c_tmp>5'd16)//判断是否有进位
led_r=1;
else
led_r=0;
end
end
assignled=led_r;
endmodule
3.2.3进位指示框图
图5进位指示框图
3.2.4进位指示模块仿真结果
图6进位指示仿真图
3.3预置数据输入
3.3.1端口定义
moduleYUZHI(a,b,clk,key1,key2,KEY);
clk为输入的系统时钟信号,key1为被加数a或被减速a的数据输入,key2为加数b或减速b的数据输入,KEY为1输入加数,0输入减数,a,b为运算的两个四位二进制数。
3.3.2verilog预置数据输入模块程序
moduleYUZHI(a,b,clk,key1,key2,KEY);
input[3:
0]key1;//被加数a或被减速a的输入
input[3:
0]key2;//加数b或减速b的输入
input[1:
0]KEY;//1输入加数,0输入减数
inputclk;
output[3:
0]a,b;//运算的两个四位数
reg[3:
0]a_r,b_r;
always@(posedgeclk)//预置两个运算数据
begin
if(KEY[0]==1)//预置加法数据
begin
a_r=key1;
b_r=key2;
end
if(KEY[1]==1)//预置减法数据
begin
a_r=key1;
b_r=key2;
end
end
assigna=a_r;
assignb=b_r;
endmodule
3.3.3预置数据输入框图
图7运算数据输入框图
3.3.4运算数据输入模块仿真结果
图8运算数据输入仿真图
3.4运算结果显示
3.4.1端口定义
moduleCOTUROL(clk,key,shezhi);
clk为输入的系统时钟信号;key为加减法选择端口,1输入加数,0输入减数;shezhi运算控制输出端口。
3.4.2verilog运算控制模块程序
moduleCOTUROL(clk,key,shezhi);
inputclk;
outputshezhi;
inputkey;
regshezhi_r;
always@(posedgeclk)
begin
if(key==1)//控制进行加法运算还是减法运算
shezhi_r=1;
else
shezhi_r=0;
end
assignshezhi=shezhi_r;
endmodule
3.4.3运算结果显示框图
图9运算结果显示框图
3.4.3运算结果显示模块仿真结果
图10运算结果显示仿真图
3.5运算
3.5.1端口定义
moduleYUNSUAN(clk,a,b,shezhi,c_tmp);
clk为输入的系统时钟信号,a为运算时的被减数或被加数,b为运算时的减数或加数,shezhi为进行运算控制的标志信号,c_tmp为运算结果的的输出信号。
3.5.2运算模块程序
moduleYUNSUAN(clk,a,b,shezhi,c_tmp);
inputclk;
input[3:
0]a,b;
inputshezhi;
output[4:
0]c_tmp;
reg[4:
0]c_tmp_r;
assignc_tmp=shezhi?
a+b:
a-b;
endmodule
3.5.3运算框图
图11运算框图
3.5.4运算仿真结果
图12运算仿真时序图
四整体组装
4.1总框图
图8总框图