EDA大作业 课程设计 简易计算器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在掌握常用数字电路功能和原理的基础上,根据EDA技术课程所学知识,利用硬件描述语言Verilog HDL、EDA软件Quartus II和硬件平台Cyclone/Cyclone II FPGA进行电路系统的设计。本次实验我完成的内容是简单计算器的设计,下面我简单的进行一下原理的阐述。

设计一个简单计算器,输入为8位二进制数,分别用两位数码管显示,输出的计算结果为16位二进制数,并用四位数码管显示,能够实现+、-、 *、/ 四种运算,其中除法的结果显示分为商和余数两部分,分别用两位数码管显示。为了完成要求的效果显示,我先设计了一个简单的四则运算器,为了使其结果能清楚的看到,所以计算器模块和一个7段数码管模块连接。实验要求,输入分别用两位数码管显示,输出用四位数码管显示,所以用一个3—8译码器和数码管连接,通过开关控制,形成动态显示。从左向右,依次是第一位数码管显示a的高四位,第二位数码管显示a的低四位;第三位数码管显示b的高四位,第四位数码管显示b的低四位;第五位数码管到第八位数码管显示输出的结果。通过改变时钟,使其看起来像同时显示在数码管上。

设计流程如下图,分别用两个数码管表示八位二进制数,用一个case 语句表示输入数值采用哪种运算方式,分别用00,01,10,11表示加,减,乘,除。用3—8译码器选择从哪个数码管输出。

硬件流程图

输出结果 A. B 的显示

软件流程图

LED 灯接线部分显示:

中心控制 复位

编码 数码管输出

输入A 输入B 运算选择C 输出out L E D 8 L E D 7 L E D 6 L E D 5 L E D 4 L E D 3 L E D 2 L E D 1

第三章程序

简单计算器的程序如下:

module jsq9(a,b,c,Dout,count,clk,rst);

input[7:0]a,b;

input clk,rst;

input[1:0]c;

output[6:0]Dout;

output [2:0]count;

reg[6:0]Dout;

reg[2:0]count;

reg[15:0]out;

reg[6:0] LED7S1,LED7S2,LED7S3,LED7S4, LED7S5,LED7S6,LED7S7,LED7S8; DECL7S u1(.A(a[7:4]) , .LED7S(LED7S1));

DECL7S u2(.A(a[3:0]) , .LED7S(LED7S2));

DECL7S u3(.A(b[7:4]) , .LED7S(LED7S3));

DECL7S u4(.A(b[3:0]) , .LED7S(LED7S4));

DECL7S u5(.A(out[15:12]) , .LED7S(LED7S5));

DECL7S u6(.A(out[11:8]) , .LED7S(LED7S6));

DECL7S u7(.A(out[7:4]) , .LED7S(LED7S7));

DECL7S u8(.A(out[3:0]) , .LED7S(LED7S8));

reg[7:0]out1,out2;

always@(a,b,c,Dout,count,clk,rst)

case(c)

2'b00:out=a+b;

2'b01:out=a-b;

2'b10:out=a*b;

2'b11:

begin

out1=a/b;

out2=a%b;

out={out1,out2};

end

default:;

endcase

always@(posedge clk or negedge rst)

begin

if(!rst)

count<=3'b000;

else if(count==3'b111)

count<=3'b000;

else

count<=count+3'b001;

end

always@(posedge clk)

begin

case(count)

3'b000: Dout<=LED7S1;

3'b001:Dout<=LED7S2;

3'b010:Dout<=LED7S3;

3'b011:Dout<=LED7S4;

3'b100: Dout<=LED7S5;

3'b101:Dout<=LED7S6;

3'b110:Dout<=LED7S7;

3'b111:Dout<=LED7S8;

endcase

end

endmodule

module DECL7S (A, LED7S);

input [3:0] A;

output [6:0] LED7S;

reg [6:0] LED7S;

always @(A)

begin

case(A)

4'b0000 : LED7S<=7'b0111111; 4'b0001: LED7S <= 7'b0000110 ; 4'b0010: LED7S <= 7'b1011011; 4'b0011: LED7S <= 7'b1001111; 4'b0100: LED7S <= 7'b1100110 ; 4'b0101: LED7S <= 7'b1101101; 4'b0110: LED7S <= 7'b1111101 ; 4'b0111: LED7S <= 7'b0000111 ; 4'b1000: LED7S <= 7'b1111111 ; 4'b1001: LED7S <= 7'b1101111 ; 4'b1010: LED7S <= 7'b1110111 ; 4'b1011: LED7S <= 7'b1111100 ; 4'b1100: LED7S <= 7'b0111001 ;

相关文档
最新文档