文档库 最新最全的文档下载
当前位置:文档库 › FPGA实验报告

FPGA实验报告

FPGA实验报告
FPGA实验报告

郑州轻工业学院

实验报告

题目:FPGA实验

课程名称:FPGA实验

姓名:田勋

院(系):计算机与通信工程学院

专业班级:通信工程14-01

学号:541407040140

指导教师:耿鑫

成绩:

时间:2017 年 3 月15

目录

1实验目的 (1)

2实验内容 (1)

3实验设备 (1)

4实验原理 (1)

5实验步骤 (5)

6实验结果 (6)

7实验心得 (8)

一、实验目的:

1、熟练Verilog语言和quartus开发环境;

2、掌握数据选择器原理;

3、编写数据选择器代码并调试仿真

3、理解半加器,全加器原理;

4、编写加法器代码并调试仿真;

5、掌握十进制计数器原理;

6、编写十进制可逆计数器代码并调试仿真;

二、实验内容:

1、理解数据选择器原理;

2、编写相应代码并调试仿真;

3、理解半加器、全加器原理;

4、编写加法器代码并调试仿真;

5、理解十进制计数器原理;

6、编写十进制可逆计数器Verilog代码并调试仿真;

三、实验设备:

带有windows操作系统和quartus软件的pc机一台;

四、实验原理:

一、数据选择器

1、数据选择器简介:

数据选择器又叫“多路开关”。数据选择器在地址码(或叫选择控制)电位的控制下,从几个数据输入中选择一个并将其送到一个公共的输出端。数据选择器的功能类似一个多掷开关,数据选择器为目前逻辑设计中应用十分广泛的逻辑部件,它有 2 选 1、4 选 1、8 选 1、16 选 1等类别。数据选择器的电路结构一般由与或门阵列组成,也有用传输门开关和门电路混合而成的。

2、真值表:

3、源代码

module datachoose(addr,in1,in2,in3,in4,in5,in6,in7,in8,mout,ncs);

input[2:0] addr;

input[width-1:0] in1,in2,in3,in4,in5,in6,in7,in8;

input ncs;

output[width-1:0] mout;

parameter width=8;

reg[width-1:0] mout;

always@(addr or in1 or in2 or in3 or in4 or in5 or in6 or in7 or in8 or ncs) begin

if(!ncs)

case(addr)

3'b000:mout=in1;

二、半加器与全加器

1、半加器原理:

(1)真值表:

加法器电路分为半加器和全加器两种。半加器在运算时不考虑前位的进位;全加器则考虑前位的进位。因此,全加器在电路的实现上也较复杂些。

(2)半加器的逻辑式:

X,Y(下面式子中以 A,B 代替)为要进行运算的两个值,Sum(下面式子中以 S 代替)和数,C 为向高位的进位值。

S=+A=A⊕B

C=AB

2、全加器原理:

(1)真值表:

3、源码

(1)半加器

module add_4(x,y,sum,c);

input[3:0] x,y;

output[3:0] sum;

output c;

assign{c,sum}=x+y;

endmodule

(2)全加器

module fulladd(a,b,s,cin,cont);

input [3:0]a,b;

input cin;

output [3:0]s;

output cont;

assign {cont,s}=a+b+cin;

三、十进制加减计数器

1、十进制计数器原理:

(1)如果从 0000 开始计数,则直到输入第九个脉冲为止,它的工作过程与 T 触发构成的计数器相同。计入第九个后电路进入 1001 状态,这时 Q3 的低电平使门G1 的输出为 0,而Q0 和 Q3 的高电平使门 G3 的输出为 1,所以 4 个触发器的输入控制端分别为T0=1,T1=0,T2=0,T3=1。因此,当第十个计数脉冲输入后,中间两个触发器维持 0 不变,两边的触发器从 1 翻转到 0,故电路返回 0000 状态。

(2)驱动方程:

根据电路图可写出电路的驱动方程为:

T0=1

T1=Q0

T2=Q0Q1

T3=Q0Q1Q2+Q0Q3

(4)源码

module counter_10(rst,clk,sel,cnt,carry_ena); input clk;

input rst;

input sel;

output [3:0]cnt;

output carry_ena;

reg [3:0]cnt;

reg carry_ena;

always@(posedge clk or posedge rst)

begin

if(rst)

cnt <= 4'b0;

else

case(sel)

1:

begin

if(cnt==4'd10)

cnt <= 4'b0;

else

cnt <= cnt + 1'b1;

end

0:

begin

if(cnt==4'b0)

cnt <= 4'd10;

else

cnt <= cnt - 1'b1;

end

endcase

end

always@(posedge clk or posedge rst)

Begin

五、实验步骤:

一、数据选择器

1、build工程,工程名为datachoose。

2、新建veillog Hdl file,将ex04_datachoose 文件夹下的datachoose.v 复制到刚建的veillog Hdl文件中保存,编译。

3、启动modesim,建立工程,工程名为datachoose,将ex04_datachoose文件下的datachoose和datachoose_test添加到工程中。

4、编译工程,点击工具栏上的compile选择compile all。

5、进行仿真,点击library中work下的datachoose_test,右击选择silmulate 进行仿真。

二、半加器与全加器

1、build 工程,工程名为add_4。

2、新建veillog Hdl file,将ex06_halfadd_4文件夹下的add_4.v复制到刚建的veillog Hdl文件中保存,编译。

3、启动modesim,建立工程,工程名为halfadd,将ex06_halfadd_4文件下的add_4和add_test添加到工程中。

4、编译工程,点击工具栏上的compile选择compile all。

5、进行仿真,点击library中work下的add_test,右击选择silmulate进行仿真。

三、十进制加减计数器

1、build工程,工程名为counter_10。

2、新建veillog Hdl file,将ex10_counter_10文件夹下的counter_10.v复制到刚建的veillog Hdl文件中,保存,编译。

3、启动modesim,建立工程,工程名为counter_10,将ex10_counter_10文件下的counter_10和counter10_test添加到工程中。

4、编译工程,点击工具栏上的compile选择compile all。

5、进行仿真,点击library中work下的counter10_test,右击选择silmulate 进行仿真。

六、实验结果:

一、数据选择器

二、半加器

三、全加器

四、十进制加减计数器

1、RLT Viewer

2、Technology Map Viewer(Post-Mapping)

3、仿真波形

七、实验心得:

刚接触到FPGA的时候,觉得挺容易的,但是在了解实验内容后,觉得并没有想象中的那么简单,只能够按照实验指导书一步步开始熟悉实验所需软件quartus,艰难的练习了Verilog语言,通过实验内容了解了数据选择器,半加器,全加器,十进制计数器原理及十进制可逆计数器的Verilog编写方法。虽然刚接触到FPGA实验,原理一些东西还不是很清楚,但我会继续学习并练习它的使用方法

实验成绩评定表

相关文档