《FPGA设计与应用》课程设计报告
学院(部) 信息工程学院
专 业计算机科学与技术
班级计算机一班
学生姓名
学号***
乞月_22_日至6月 28日共丄周
指导教师(签字)
实验名称:
第一次实验:组合电路设计;第二次试骑:时序电路设计。
实验目的与要求:
、组合电路设计:
1、掌握Verilog程序设计的一般方法;
2、掌握Xilinx的ISE软件的开发方法;
3、在BASYS2开发板上进行组合电路设计实践。
、吋序电路设计:
1、进一步掌握Verilog程序设计的一般方法;
2、熟练掌握Xilinx的ISE软件的开发方法;
3、在BASYS2开发板上进行时序电路设计实践。
实验内容:
组合逻辑电路设计:将8位二进制数转换为3位BCD码。要求通过拨码开关输入8 位二进制数,并通过LED数码管实时显示转换后的结果。
时序逻辑电路设计:编程实现一个4位的二进制计数器,并将计数值以十六进制方 式显示在LED数码管上。
电路描述:
(1)组合逻辑电路设计:
基本思路是把二进制按4位一组分开,把每一组对应的二进制数转换成bed码表,最 后把所有位进行bed码相加。把11位二进制查表得出的3个数进行bed码相加。这里把 每个结果按同级单个bed码相加,也就是>9对结果加6, >19对结果加12, >29对结果加 18类推,高一级的bed码要加上低一级的进位,也就是高出4位的部分,最后把结果拼接。
bin bcd top:1
(2)时序逻辑电路的设计:
1
btn(3:0)1
Binary top
F
1
an(3:0)
elk
? A
fr b cnt(6:0)
do
Binary_top
源程序:
(1)组合逻辑电路:
顶级模块binbcd_top:
module binbcdtop、
(input wire[7:0]sw, input elk, input clr, output [6:0] seg, output reg [3:0] an, output dp); wire [1:0] s; reg [3:0] digit; reg [19:0] clk_reg=0; assign dp=l;
assign s=clk_reg[19:18];
always@(posedge elk or posedge clr) if (clr==l)
clk_reg<=0;
else
clk_reg<=clk_reg+l;
wire [9:0]temp;
binbeds ts (
b(sw[ 7:0]),
p(temp)
);
always@(*)
case (s)
0:digit<=temp[3:0]; l:digit<=temp[7:4]; 2:digit<=temp[9:8]; //3:digit=x[15:12]; default:digit
endcase always@(*) case(s)
0:an[3:0]〈=4' blllO;
1:an[3:0]<=4, bllOl; 2:an[3:0]<=4,bl011;
//3:an[3:0]=4, bOlll; default:an[3:0]
cndcasc
hex7seg c!4 (? x (digit), ? a_to_g(seg)); endmodule
8位二进制转换3BCD码存放在10位中的binbeds模块: module binbeds(
input wire [7:0] b, output reg [9:0] p
);
reg [17:0] z;
intcgcr i;
always @(*) begin for (i=0; i〈二 17; i二i+1)
刁[i]二0;
z[10:3]二b;
repeat (5)
begin
if(z[ll:8]>4) z[ll:8]=z[ll:8]+3;
if(z[15:12]〉4) z[15:12]=z[15:12]+3;
z[17:l]=z[16:0];
end
p二z[17:8];
end
endmodule
4位二进制在数码管的hex7seg模块: module hex7seg(
input wire [3:0] x, output reg [6:0]且_to_g
);
always? (*) case (x)
0:a_to_g=7, bl000000;
1:a_to_g=7, bllllOOl; 2:a_to_g=7, bOlOOlOO; 3:a_to_g=7, bOllOOOO;
4:a_to_g=7, bOOllOOl; 5:a_to_g=7, bOO10010; 6:a_to_g=7, bOOOOOlO;
7:a_to_g