安康学院。
fpga/sopc课程设计报告书。
设计项目成绩评定表。
设计报告书目录。
一、设计目的 1
二、设计思路 1
三、设计过程 1
3.1、系统总体方案 1
3.2、程序设计具体步骤 2
四、系统调试与结果 8
五、 主要元器件与设备 8
六、课程设计体会与建议 8
6.1、设计体会 8
6.2、设计建议 9
七、 参考文献 9
1. 熟练掌握verilog语言及fpga开发板环境搭建。
2. 熟练应用quartus ii 9.1 (32-bit)
1、顶层模块首先构建add_rca_16
2、第二层由4个4位的rca构成add_rca_16
3、第三层由4个单比特的全加器构成add_rca_4
4、第四层由2个单比特的半加器和一个或门构成全加器add_full
5、第五层由一个与门和一个异或门组成单比特的半加器add_half
顶层符号如图1:
图1 顶层模块。
第二层由4个4位的rca构成add_rca_16如图2:
图2 由4个4位的rca构成add_rca_16
第三层由4个单比特的全加器构成add_rca_4如图3:
图3 由4个单比特的全加器构成add_rca_4
第四层由2个单比特的半加器和一个或门构成全加器add_full如图4
图4由2个单比特的半加器和一个或门构成全加器add_full
第五层由一个与门和一个异或门组成单比特的半加器add_half如图5:
图5 由一个与门和一个异或门组成单比特的半加器add_half
第1步、顶层符号如图6:
图6 顶层符号。
**:module add_rca_16(a, b, c_in, sum, c_out);
input [15:0] a;
input [15:0] b;
input c_in;
output [15:0] sum;
output c_out;
wire c_m0, c_m1, c_m2;
add_rca_4 m0(.a(a[3:0]),b(b[3:0]),c_in(c_in), sum(sum[3:0]),c_out(c_m0));
add_rca_4 m1(.a(a[7:4]),b(b[7:4]),c_in(c_m0), sum(sum[7:4]),c_out(c_m1));
add_rca_4 m2(.a(a[11:8]),b(b[11:8]),c_in(c_m1), sum(sum[11:8]),c_out(c_m2));
add_rca_4 m3(.a(a[15:12]),b(b[15:12]),c_in(c_m2), sum(sum[15:12]),c_out(c_out));
endmodule
测试**:timescale 1ns/1ns
module add_rca_16_tb;
reg [15:0] a, b;
reg c_in;
wire [15:0] sum;
wire c_out;
integer i;
add_rca_16 u1(.a(a), b(b), c_in(c_in), sum(sum), c_out(c_out));
initial
begina = 0; b = 0; c_in = 0;
forever
beginfor(i=0;i<=65535;i=i+1)
begin20 a = i; b = i; c_in = 0;
20 a = i; b = i; c_in = 1;
endend
endendmodule
第2步、第二层由4个4位的rca构成add_rca_16如图7:
图7 4位的rca
**:module add_rca_4(a, b, c_in, sum, c_out);
input [3:0] a;
input [3:0] b;
input c_in;
output [3:0] sum;
output c_out;
wire c_b0, c_b1, c_b2;
add_full b0(.a(a[0]),b(b[0]),c_in(c_in), sum(sum[0]),c_out(c_b0));
add_full b1(.a(a[1]),b(b[1]),c_in(c_b0), sum(sum[1]),c_out(c_b1));
add_full b2(.a(a[2]),b(b[2]),c_in(c_b1), sum(sum[2]),c_out(c_b2));
add_full b3(.a(a[3]),b(b[3]),c_in(c_b2), sum(sum[3]),c_out(c_out));
endmodule
测试**:timescale 1ns/1ns
module add_rca_4_tb;
reg [3:0] a, b;
reg c_in;
wire [3:0] sum;
wire c_out;
integer i
add_rca_4 u1(.a(a), b(b), c_in(c_in), sum(sum), c_out(c_out));
initial
begina = 0; b = 0; c_in = 0;
forever
beginfor(i=0;i<=15;i=i+1)
begin20 a = i; b = i; c_in = 0;
20 a = i; b = i; c_in = 1;
endend
endendmodule
第三步、第三层由4个单比特的全加器构成add_rca_4如图8:
图8 单比特的全加器。
**:module add_full(a, b, c_in, sum, c_out);
input a;
input b;
input c_in;
output sum;
output c_out;
wire sum_h0, c_out_h0, c_out_h1;
add_half h0(.a(a), b(b), sum(sum_h0), c_out(c_out_h0));
add_half h1(.a(c_in), b(sum_h0), sum(sum), c_out(c_out_h1));
or (c_out, c_out_h0, c_out_h1);
endmodule
测试**:`timescale 1ns/1ns
module add_full_tb;
reg a, b, c_in;
wire sum, c_out;
add_full u1(.a(a), b(b), c_in(c_in), sum(sum), c_out(c_out));
initial
begina = 0; b = 0; c_in = 0;
forever
begin20 a = 0; b = 0; c_in = 0;
20 a = 1; b = 0; c_in = 0;
20 a = 0; b = 1; c_in = 0;
20 a = 1; b = 1; c_in = 0;
20 a = 0; b = 0; c_in = 1;
20 a = 1; b = 0; c_in = 1;
20 a = 0; b = 1; c_in = 1;
20 a = 1; b = 1; c_in = 1;
endend
endmodule
第四步、第四层由2个单比特的半加器和一个或门构成全加器add_full如图3.2.4:
图9 单比特的半加器。
**:module add_half(a, b, sum, c_out);
input a;
input b;
output sum;
output c_out;
and (c_out, a, b);
xor (sum, a, b);
endmodule
测试**:timescale 1ns/1ns
module add_half_tb;
reg a, b;
wire sum, c_out;
add_half u1(.a(a), b(b), sum(sum), c_out(c_out));
initial
begina = 0; b = 0;
forever
begin20 a = 0; b = 0;
20 a = 0; b = 1;
20 a = 1; b = 0;
20 a = 1; b = 1;
endend
endmodule
1、在quartus ii上运行无误如图10:
图10 编译结果。
2、在modelsim调试结果如图11:
图11 调试结果。
电脑一台、fpga开发板一台。
FPGA课程设计
黑龙江大学。fpga通信模块设计。专业 通信工程。学号 20085415 姓名 王琪。fpga通信模块设计。1 现代数字信号处理。随着电子技术和集成电路技术的飞速发展,数字信号处理已广泛应用于语音 图像处理,通信和多 等领域中。傅立叶变换 dft 作为其数字信号处理中的基本运算,发挥着重要作用。特别...
fpga课程设计
异步数据复接设计。孟伟荣 201222250226 空天院。根据3个时钟的不同速率,如果最终的并行输出是同步字节 对应数据的结构,可以发现aa 两帧第一路数据 bb 三帧第二路数据 cc正好满足要求。其中aabbcc均以16进制数据表示。aa,bb,cc分别使用一个byte的寄存器。本设计中为使结果...
FPGA课程设计
fpga课。程。设。计。专业 10级电子信息工程。班级 1班。姓名 傅雅琦。学号 100102011120 指导教师 祝宏。制作日期 2012年12月13日。1.模为100的可加减计数器。1.标题及任务书。第一阶段 熟悉设计要求构造大致思路。第二阶段 图书馆查阅资料,仿照例子编程。第三阶段 开始编程...