当前位置:文档之家› Verilog HDL 实验报告

Verilog HDL 实验报告

Verilog HDL 实验报告
Verilog HDL 实验报告

实验一Modelsim仿真软件的使用一、实验目的

(1)熟悉Modelsim 软件

(2)掌握Modelsim 软件的编译、仿真方法

(3)熟练运用Modelsim 软件进行HDL 程序设计开发

二、实验内容

1、实验要求

用Verilog HDL 程序实现一个异或门,Modelism仿真,观察效果。

2、步骤

1、建立工程

2、添加文件到工程

3、编译文件

4、查看编译后的设计单元

5、将信号加入波形窗口

6、运行仿真

3、方法

moduleyihuo (a,b,c);

inputa,b;

output c;

assign c=a^b;

endmodule

测试程序:

module t_yihuo;

reg a,b;

wire c;

initial

begin

a=0;

forever #20 a=~a;

end

initial

begin

b=0;

forever #30 b=~b;

end

yihuou1(a,b,c);

endmodule

二、实验结果

波形图:

三、分析和心得

通过这次的实验,我基本熟悉Modelsim软件,掌握了Modelsim软件的编译、仿真方法。同时在编写程序的过程中,加深了我对课上所讲的HDL的语法的认识。

实验二简单组合电路设计

一、实验目的

(1)掌握基于Modelsim的数字电路设计方法

(2)熟练掌握HDL 程序的不同实现方法

二、实验内容

1、实验要求

设计一个三人表决器(高电平表示通过),实验内容如下:

(1)三个人,一个主裁判,两个副裁判;

(2)规则:只要主裁判同意,输出结果为通过;否则,按少数服从多数原则决定是否通过。

使用 Verilog HDL 程序实现上述实验内容,并使用modelsim 仿真。

2、方法

module test(a,b,c,s);

inputa,b,c;

output s;

assign s=c|(b&a);

endmodule

modulet_test;

rega,b,c;

wire s;

initial

begin

a=0;

forever#10 a=~a;

end

initial

begin

b=0;

forever #20 b=~b;

end

initial

begin

c=0;

forever#40 c=~c;

end

test u1(a,b,c,s);

endmodule

三、实验结果

四、分析和心得

通过本次实验,我掌握基于Modelsim的简单数字电路设计方法,且尝试了用不同方法实现功能,三人表决器可以通过testbench测试程序实现,也可以利用always模块实现,可见程序的设计思想是很重要的。

实验三二进制全加器设计

一、实验目的

(1)熟悉V erilog HDL 元件例化语句的作用

(2)熟悉全加器的工作原理

(3)用V erilog HDL 语言设计四位二进制全加器,并仿真,下载验证其功能

二、实验内容

1、实验要求

(1)用 Verilog HDL 语言描述一位全加器,并使用 modelsim仿真验证结果。

(2)用 Verilog HDL 元件例化语句实现四位全加器,modelsim仿真验证结果。

(3)设计程序将加法结果分开输出,即十位数和个位数分别用四位数组表示。

2、方法

module add1(a,b,c,s,sc);

inputa,b,c;

outputs,sc;

assign {s,sc}=a+b+c;

endmodule

module add4(ad1,ad2,c,ss,sc);

input [3:0] ad1,ad2;

input c;

output [3:0]ss;

outputsc;

wire c1,c2,c3;

add1 u1(ad1[0],ad2[0],c,ss[0],c1);

add1 u2(ad1[1],ad2[1],c1,ss[1],c2);

add1 u3(ad1[2],ad2[2],c2,ss[2],c3);

add1 u4(ad1[3],ad2[3],c3,ss[3],sc); endmodule

测试程序:

module t_add4;

reg [3:0] ad1,ad2;

reg c;

wiresc;

wire [3:0]ss;

initial

begin

ad1=4'b0;

forever #10 ad1=ad1+4'b1;

end

initial

begin

ad2=4'b0;

forever #80 ad2=ad2+4'b1;

end

initial

begin

c=4'b0;

forever #640 c=c+4'b1;

end

add4 f1(ad1,ad2,c,ss,sc);

endmodule

三、实验结果

波形图:

四、分析和心得

通过这次试验我熟悉了V erilog HDL 元件例化语句的作用,并且熟悉全加器的工作原理。在四位全加器的过程中,也了解了如何调用模块。

实验四二进制计数器设计

一、实验目的

(1)熟悉V erilog HDL 时序电路的设计方法;

(2)了解清零和使能的概念,以及同步清零和异步清零的区别

(3)用V erilog HDL 语言设计二进制计数器,并仿真

二、实验内容

1、实验要求

(1)编程实现二进制计数器并仿真。

(2)编程实现十进制计数器,含同异步清零端和进位输出端,编程实现,并modelsim仿真。

2、方法

(1)二进制计数器

module test(out,count,clk,nrst);

inputclk,nrst;

output [3:0] out,count;

reg [3:0] out,count;

always @(posedgeclk or negedgenrst)

begin

if(!nrst)

begin

out<=4'b0;

count<=1'b0;

end

else

if(out==4'b0001)

begin

out<=4'b0000;

count<=count+1'b1;

else

out<=out+4'b1;

end

endmodule

测试程序:

modulet_test;

regclk,nrst;

wire [3:0] out,count;

initial

begin

clk=0;

forever #10 clk=~clk;

end

initial

begin

nrst=0;

#10 nrst=1;

#30 nrst=0;

#30 nrst=1;

end

test u1(out,count,clk,nrst); endmodule

(2)十进制计数器

module test(out,count,clk,nrst); inputclk,nrst;

output [3:0] out,count;

reg [3:0] out,count;

always @(posedgeclk or negedgenrst)

if(!nrst)

begin

out<=4'b0;

count<=1'b0;

end

else

if(out==4'b1001) begin

out<=4'b0000;

count<=count+1'b1; end

else

out<=out+4'b1;

end

endmodule

moduleT_test; regclk,nrst;

wire [3:0] out,count; initial

begin

clk=0;

forever #10 clk=~clk; end

initial

begin

nrst=0;

#10 nrst=1; #30 nrst=0;

#30 nrst=1;

end

test u1(out,count,clk,nrst);

endmodule

三、实验结果

二进制波形图:

十进制波形图:

四、分析和心得

本次实验熟悉了对textbench程序的编写,可以更好的验证已知程序的正确性,同时熟悉Verilog HDL时序电路的设计方法,掌握了同异步清零的区别和功能使用,学会了计数器的编写,把理论和实际相结合,非常实用。

实验五基本IO实验

一、实验目的

(1)学习QuartusⅡ 5.0 的基本操作;

(2)熟悉教学实验板的使用;

(3)初步掌握V erilog语言的设计输入,编译,仿真和调试过程。

二、实验内容

1、实验步骤

(1)建立工程

(2)建立文本文件

(3)分配管脚

(4)编译

(5)仿真

(6)下载

(7)实验结果

2、实验方法

程序:

moduletestio(key1,led1);

input key1;

output led1;

assign led1 = ~ key1;

endmodule

管脚:

set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED"

set_global_assignment -name ENABLE_INIT_DONE_OUTPUT OFF

set_location_assignment PIN_181 -to led1

set_location_assignment PIN_64 -to key1

三、实验结果

仿真波形图:

在实验箱上的效果是:按下实验板上的KEY1,对应的第一个LED灯灭。

四分析和心得

本次实验让我学会了一个新的软件的应用。实验让我们学会了把HDL语言从简单的软件仿真到了硬件上的实现,真正使得理论和实际相结合,我意识到了以后需要多多动手实际操作。

数电实验报告2.1—基于Verilog HDL显示译码器设计

<基于Verilog HDL显示译码器设计>实验报告 学生姓名: 班级学号: 指导老师:

<实验报告内容> 一、实验名称:基于Verilog HDL 显示译码器设计 二、实验学时:4学时 三、实验目的:进一步掌握QuartusII 软件逻辑电路设计环境及Verilog HDL 的基本语法,熟悉设计流程及思路。掌握显示译码器的工作原理及应用。(提示:本实验将涉及到verilog 的条件语句(如if …else, case ….end case, for ….等)、赋值语句(如assign 等)和二进制变量位宽的定义等内容,请大家实验前做好本部分预习和自学,可参考本课本第九章内容,也可自行查找有关Verilog 设计基础的相关内容,推荐参考书:北京航空航天出版社,夏宇闻编著 )。通过对所设计逻辑电路功能仿真,分析所设计电路逻辑功能是否正确,掌握逻辑功能仿真的方法。 四、实验内容:基于verilog 的显示译码器逻辑设计及功能仿真 五、实验原理:(1)半导体发光二极管(LED )数码显示器:半导体发光二极管数码显示器由7(或8)个LED 排成“日”字形,称为七段(或八段),封装成数码管,如错误!未找到引用源。所示。LED 数码管内部有共阴极和共阳极两种接法。如错误!未找到引用源。。 (2 )常用显示译码器管脚功能(74LS148):LCD —七段显示译码器:介绍常用的74LS148七段显示译码器, 图 3为74LS48 74LS48 (a ) 图 1 图 2 CC f g a b c d e BI 7123456

图 3 (3)74LS48的逻辑功能:如表1: 表1 其译码器输出(Ya~Yg)是高电平有效,适用于驱动共阴极LED数码管,显示的字形表中所示。因其译码器输出端的内部有上拉电阻(是2K的限流电阻),因此在与LED管连接时无需再外接限流电阻。 具体功能介绍及内部设计图,请自行上网查阅74LS48的DATASHEET。 六、实验步骤: 1.复习QuartusII软件逻辑电路设计环境及Verilog HDL的基本语法,熟悉设计流程及思路。 2.做好预习和自习,查找相关资料。 3.设计出文本输入并进行功能仿真。

Verilog HDL实验报告

HDL实验报告 专业电子科学与技术 姓名 学号 指导老师

1 实验一Modelsim仿真软件的使用 1.1 实验目的 (1)熟悉Modelsim 软件; (2)掌握Modelsim 软件的编译、仿真方法; (3)熟练运用Modelsim 软件进行HDL 程序设计开发。 1.2 实验步骤 (1)学习使用Modelsim软件; (2)分析原理及功能; (3)用Verilog HDL编写程序; (4)编写测试程序进行仿真; (4)观察波形,分析仿真结果是否正确。 1.3 实验内容 用Verilog HDL 程序实现一个异或门,Modelsim 仿真,观察效果。 1.4.1 程序 module my_xor(ina,inb,out); input ina,inb; output out; assign out=ina^inb; endmodule module t_xor; reg ina,inb; wire out; initial begin ina=1'b0; forever #20 ina=~ina; end initial begin inb=1'b0; forever #10 inb=~inb; end my_xor tt(.ina(ina),.inb(inb),.out(out)); endmodule

2 实验二简单组合电路设计 2.1 实验目的 (1)掌握基于Modelsim 的数字电路设计方法; (2)熟练掌握HDL 程序的不同实现方法 2.2 实验步骤 (1)分析原理及功能; (2)根据原理用Verilog HDL编写程序; (3)编写测试程序进行仿真; (4)观察波形,分析仿真结果是否正确。 2.3 实验内容 设计一个三人表决器(高电平表示通过) ,实验内容如下: (1)三个人,一个主裁判,两个副裁判; (2)规则:只要主裁判同意,输出结果为通过;否则,按少数服从多数原则决定是否通过。使用Verilog HDL 程序实现上述实验内容,并使用modelsim 仿真(要求:至少使用两种方法实现上述实验内容和testbench)。 2.4.1 程序 方法1: module voter(v0,v1,v2,y); input v0,v1,v2; output y; assign y=v0|(v1&v2); endmodule 方法2: module voter(v0,v1,v2,y); input v0,v1,v2; output reg y; always @(v0,v1,v2) begin if(v0) y=1;

北航verilog实验报告(全)

目录 实验一 (2) 实验二 (9) 实验三 (21) 实验四 (44)

实验一 实验目的:熟悉硬件开发流程,掌握Modelsim设计与仿真环境,学会简单组合逻辑电路、简单时序逻辑电路设计,不要求掌握综合和综合后仿真。 实验内容:必做实验:练习一、简单的组合逻辑设计 练习二、简单分频时序逻辑电路的设计 选做实验:选做一、练习一的练习题 选做二、7段数码管译码电路 练习一、简单的组合逻辑设计 描述一个可综合的数据比较器,比较数据a 、b的大小,若相同,则给出结果1,否则给出结果0。 实验代码: 模块源代码: module compare(equal,a,b); input a,b; output equal; assign equal=(a==b)?1:0; endmodule 测试模块源代码: `timescale 1ns/1ns `include "./compare.v" module t; reg a,b; wire equal; initial begin a=0; b=0; #100 a=0;b=1; #100 a=1;b=1;

#100 a=1;b=0; #100 a=0;b=0; #100 $stop; end compare m(.equal(equal),.a(a),.b(b)); endmodule 实验波形 练习二、简单分频时序逻辑电路的设计 用always块和@(posedge clk)或@(negedge clk)的结构表述一个1/2分频器的可综合模型,观察时序仿真结果。 实验代码: 模块源代码: module halfclk(reset,clkin,clkout); input clkin,reset; output clkout; reg clkout; always@(posedge clkin) begin if(!reset) clkout=0; else clkout=~clkout; end endmodule 测试模块源代码: `timescale 1ns/100ps `define clkcycle 50 module tt; reg clkin,reset; wire clkout;

北航电子电路设计数字部分实验报告

电子电路设计数字部分实验报告 学院: 姓名:

实验一简单组合逻辑设计 实验内容 描述一个可综合的数据比较器,比较数据a 、b的大小,若相同,则给出结果1,否则给出结果0。 实验仿真结果 实验代码 主程序 module compare(equal,a,b); input[7:0] a,b; output equal; assign equal=(a>b)1:0; endmodule 测试程序

module t; reg[7:0] a,b; reg clock,k; wire equal; initial begin a=0; b=0; clock=0; k=0; end always #50 clock = ~clock; always @ (posedge clock) begin a[0]={$random}%2; a[1]={$random}%2; a[2]={$random}%2; a[3]={$random}%2; a[4]={$random}%2; a[5]={$random}%2; a[6]={$random}%2; a[7]={$random}%2; b[0]={$random}%2; b[1]={$random}%2; b[2]={$random}%2; b[3]={$random}%2; b[4]={$random}%2;

b[5]={$random}%2; b[6]={$random}%2; b[7]={$random}%2; end initial begin #100000 $stop;end compare m(.equal(equal),.a(a),.b(b)); endmodule 实验二简单分频时序逻辑电路的设计 实验内容 用always块和@(posedge clk)或@(negedge clk)的结构表述一个1/2分频器的可综合模型,观察时序仿真结果。 实验仿真结果

verilog hdl 实验报告

Verilog HDL数字系统设计 实验报告汇总 任课教师 实验者姓名 学号 实验指导教师

姓名学号 时间地点 实验题目阻塞赋值与非阻塞赋值的区别 一.实验目的与要求 (1)通过实验,掌握阻塞赋值与非阻塞赋值的概念与区别; (2)了解非阻塞赋值和阻塞赋值的不同使用场合; (3)学习测试模块的编写,综合和不同层次的仿真。 二.实验环境 仿真软件: modlsim6.2SE 三.实验内容 阻塞赋值与非阻塞赋值,在教材中已经了解了他们之间在语法上的区别以及综合后所得到的

电路结构上的区别。在always块中,阻塞赋值可以理解为赋值语句是并发执行的。时序逻辑设计中,通常都使用非阻塞赋值语句,而在实现组合逻辑的assign结构中,或者always快结构中都必须采用阻塞赋值语句。 四.系统框图 五.实验波形图 六.实验体会 (1)一开始使用modelsimSE6.2时候不知道建立工作区的方法。后面请教了毕老师才知道如何来建立工作区。 (2)编译时候错误看不懂,细心找才发现‘ ` 两个符号有区别 (3)波形找不到,后来发现时没有放大。 七.代码附录: 源代码:

// ---------- 模块源代码:---------------------- // ------------- blocking.v --------------- module blocking(clk,a,b,c); output [3:0] b,c; input [3:0] a; input clk; reg [3:0] b,c; always @(posedge clk) begin b = a; c = b; $display("Blocking: a = %d, b = %d, c = %d ",a,b,c); end endmodule //------------- non_blocking.v ------------------- module non_blocking(clk,a,b,c); output [3:0] b,c; input [3:0] a; input clk; reg [3:0] b,c; always @(posedge clk) begin b <= a; c <= b; $display("Non_Blocking: a = %d, b = %d, c = %d ",a,b,c); end endmodule 测试模块: // ---------- 测试模块源代码:-------------------------- //------------- compareTop.v -----------------------------

Verilog实验报告交通灯

V e r i l o g实验报告交通 灯 集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]

V e r i l o g实验报告---第四次交通灯 班级:集电0802班 姓名:张鹏 学号: 04086057 序号: 16 一、规范 (1)具有开关功能:当reset=0时红绿灯关闭,使主支干道六个灯全灭; (2)具有四个功能:当reset=1且func=2’b00时,主干道和支路正常计数; 且func=2’b01时,支干道一直绿灯,主干道一直红灯; 且func=2’b10时,主干道一直绿灯,支干道一直红灯; 且func=2’b11时,主干道和支干道一直黄灯闪; (3)计数器频率:运行频率2Hz计数器; (4)信号灯种类:红、黄、绿; (5)信号灯计执行时间关系:主干道:绿灯常亮+绿灯闪+黄灯=支干道:红灯常亮; 此设计中: 主干道:绿灯常亮=57s,T绿灯闪=3s,T黄灯亮=3s 支干道:绿灯常亮=15s,T绿灯闪=3s,T黄灯亮=3s (6)信号灯到计时功能:信号灯预置后,开始执行2Hz计数器; (7)信号灯跳转功能:当各信号灯计时至T时在下一个时钟信号上升沿到来时自动转为下一状态; (8)信号灯各状态跳转关系:绿-黄-红-绿; 二、输入输出定义

状态转移图: 四、测试代码 module frequency_divider_small(reset,clk,out); eset(reset),.clk(clk),.func(func),.green(green),.red(red),.yellow(yellow)); always #10 clk=~clk; initial begin reset=0; clk=1; func=2'b00; #20 reset=1; #21000 func=2'b01; #10000 func=2'b10; #10000 func=2'b11; end endmodule 波形: 五、源代码 module frequency_divider(reset,clk,out);eset(reset),.clk(clk),.out(in));//调用分频模块 always @ (posedge clk or negedge reset) if(!reset) begin cnt<=7'd0; state<=3'd1; green<=2'b00; red<=2'b00; yellow<=2'b00; end else if(in)//分频器结果当主模块始能 if(func==2'b00)//选择不同功能控制开关 if(cnt==7'd0) case(state)//选择不同状态 3'd1:begin cnt<=greentime1<<1;

通过Verilog实现交通灯设计实验报告

电子科技大学 实 验 报 告 一、实验室名称:虚拟仪器实验室 二、实验项目名称:交通灯设计实验 三、实验学时:4学时 四、实验原理

假设交通灯处于南北和东西两条大街的“十”字路口,如图1所示。用FPGA 开发板的LED 灯来模拟红、黄、绿3种颜色信号,并按一定顺序、时延来点亮LED ,如图2所示。图3给出了交通灯的状态转移图。设计使用频率为1Hz 的时钟来驱动电路(注1:仿真时采用1MHz 的时钟来驱动电路),则停留1个时钟可得到1S 的延时,类似停留3个时钟可得到3S 的延时,停留15个时钟可得到15S 的延时(注2:开发板工作时钟为50MHz )。 北 南 西东 图1. 六个彩色LED 可以表示一组交通信号灯 图2. 交通灯状态 南北 东西 红 黄 绿 红 黄 绿 S0 1 0 0 0 0 1 S1 1 0 0 0 1 0 S2 1 0 0 1 0 0 S3 0 0 1 1 0 0 S4 0 1 0 1 0 0 S5 1 0 0 1 0 0

图3. 交通灯的状态转移图 顶层模块 时钟分频模块状态机跳转模块 图4. 交通灯的原理框图 五、实验目的 本实验是有限状态机的典型综合实验,掌握如何使用状态转移图来定义Mealy状态机和Moore状态机,熟悉利用HDL代码输入方式进行电路的设计和仿真的流程,掌握Verilog语言的基本语法。并通过一个交通灯的设计掌握利用EDA软件(Xilinx ISE 13.2)进行HDL代码输入方式的电子线路设计与仿真的详细流程。。 六、实验内容 在Xilinx ISE 13.2上完成交通灯设计,输入设计文件,生成二进制码流文件下载到FPGA开发板上进行验证。 七、实验器材(设备、元器件)

数字逻辑实验报告-Verilog时序逻辑设计

电子科技大学 实验报告 学生姓名:任彦璟学号:2015040101018 指导教师:吉家成米源王华 一、实验项目名称:Verilog时序逻辑设计 二、实验目的: 掌握边沿D触发器74x74、同步计数器74x163、4位通用移位寄存器74x194,的工作原理。 设计移位寄存器74x194设计3位最大序列长度线性反馈移位寄存器(LFSR:Linear Feedback Shift Register)计数器。 设计同步计数器74x163 。 三、实验内容: 1.设计边沿D触发器74x74。 2.设计通用移位寄存器74x194。 3.采用1片74x194和其它小规模逻辑门设计3位LFSR计数器。 4.设计4位同步计数器74x163。 四、实验原理: 74x74逻辑电路图

CLK_D CLR_L_D S1_L S1_H S0_L S0_H w1 w2 w3 w4 w5 w6 w7 w8 w9 w10 w11 w12 w13 w14 w15 w16 w17 w18 w19 w20 74x194逻辑电路图 3位LFSR逻辑电路图

74x163逻辑电路图 上图的设计可以采用门级描述,也可以采用教材《数字设计—原理与实践》(第4版)第525页的表8-20中的行为描述 五、实验器材(设备、元器件): PC 机、Windows XP 、Anvyl 或Nexys3开发板、Xilinx ISE 14.7开发工具、Digilent Adept 下载工具。 六、实验步骤: 实验步骤包括:建立新工程,设计代码与输入,设计测试文件,设置仿真,查看波形,约束与实现、生成流代码与下载调试。 七、关键源代 码及波形图: 1.D 触发器的Verilog 代码 源码如下 module vr74x74(CLK, D, PR_L, CLR_L, Q, QN); input CLK, D, PR_L, CLR_L ; output Q, QN ; wire w1, w2, w3, w4 ; nand (w1, PR_L, w2, w4); nand (w2, CLR_L, w1, CLK) ; nand (w3, w2, CLK, w4) ; nand (w4, CLR_L, w3, D) ; nand (Q, PR_L, w2, QN); nand (QN, Q, w3, CLR_L); endmodule

实验六-数字频率计的Verilog-HDL语言实现

五邑大学实验报告 实验课程名称 ) 数字频率计的Verilog HDL语言实现 院系名称:信息工程学院 专业名称:通信工程(物联网工程) 实验项目名称:EDA实验 班级: 110711 学号: 。 报告人:冯剑波

实验六 数字频率计的Verilog HDL 语言实现 一、实验目的: 1、掌握较复杂数字电路或系统的纯Verilog HDL 实现方法; 2、体会纯Verilog HDL 语言输入设计与原理图输入设计的差别。 二、实验原理: 【 数字频率计是用来测量输入信号的频率并显示测量结果的系统。一般基准时钟的高电平的持续时间为s T 10 ,若在这0T 内被测信号的周期数为N 则被测信号的频率就是N ,选择不同的0T ,可以得到不同的测量精度。一般0T 越大,测量精度越高,但一次的测量时间及频率计所需的硬件资源也增加。 三、设计任务与要求: 1、设计一个6位频率计,测量范围从1Hz 到99 99 99Hz ,测量结果用6个数码管显示,基准时钟频率为1Hz ; 2、只显示测量结果,中间计数过程不显示;结果更新时间2秒一次; 3、频率计只设一个复位键,按下该键(reset=0)系统复位,释放该键(reset=1)系统工作,测量并显示结果。 4、显示用静态方式; 5、用Verilog HDL 实现上述要求的频率计。 四、设计源程序及注释与仿真结果 设计源程序: module pinlvji(oHEX0,oHEX1,oHEX2,oHEX3,oHEX4,oHEX5,clk_50M,clk_1Hz,reset,signal_out); @ input clk_50M,reset; //50MHz 时钟输入、复位 output[6:0] oHEX0,oHEX1,oHEX2,oHEX3,oHEX4,oHEX5; //数码管0-5,分别显示个、十、百、千、万、十万位的数字 output reg clk_1Hz; output reg signal_out; reg signal_in; reg[29:0] cnt; reg[29:0] cnt1; reg count_en; //计数允许,count_en=1时计数,下降沿到来时锁存 reg load; reg[3:0] ge,shi,bai,qian,wan,shiwan; reg cout1,cout2,cout3,cout4,cout5; reg[3:0] q0,q1,q2,q3,q4,q5; wire clr; always @(posedge clk_50M) //改变Hz 的范围,自己设定的频率1Hz-999999Hz begin

Verilog实验报告

实验报告格式要求 一、实验报告内容包括: (1)实验名称。 (2)实验目的。 (3)实验仪器及编号。写明仪器名称、型号、编号。 (4)实验原理。简单叙述有关实验原理(包括电路图或光路图或实验装置示意图)及测量中依据的的公式,式中各量的物理含义及单位,公式成立所应满足的实验条件等。 (5)实验内容及步骤。根据实验内容及实际的实验过程写明关键步骤和安全注意要点。 (6)实验观测记录。记录原始测量数据、图形等有关原始量,形式上要求整齐规范。 (7)数据处理结果。根据实验要求,采用合适的方法进行数据处理,误差分析,最后写出实际结果。 (8)小结或讨论。内容不限。可以是实验中的现象分析,对实验关键问题的体会,实验的收获和建议,也可解答思考题。 二、书写次序 (1)到(5)是进行实验预习时就应该完成的。(6)在实验中完成。做完实验后再在预习报告基础上完成(7)(8)两项。 完成一个实验,就是一次最基本的科研训练,从预习到写出一个实验报告,每一步都有极其丰富的学习内容,要积极思考,认真对待。

实验(一)简单的组合逻辑设计 实验日期2014-10-31 同组者姓名 一、实验目的 [1] 掌握基本组合逻辑电路的实现方法 [2] 初步了解两种基本组合逻辑电路的生成方法 [3] 学习测试模块的编写 [4] 通过综合和布局布线了解不同层次仿真的物理意义 二、实验仪器 计算机、FPGA开发板 三、实验内容 [1] 在ISE软件环境中进行一次完整的设计流程,并在FPGA开发板上实现与门的功能。 [2] 完成一个可综合的数据比较器的程序。 [3] 完成数据比较器的测试模块。 [4] 发挥部分:设计一个多位(2位)的数据比较器并在FPGA开发板上实现该比较器。 四、实验步骤、分析及结果(在下面写出你的代码) 代码: module compare( input a, input b, output c ); assign c=a&b; endmodule 结果如图所示:

华中科技大学Verilog语言实验报告

计算机科学与技术学院

目录 1数据通路实验 (1) 1.1实验目的 (1) 1.2实验内容及要求 (1) 1.3实验方案 (2) 1.4实验步骤 (2) 1.5故障及分析 (2) 1.6仿真与结果 (3) 1.7心得与体会 (4) 2FSM实验 (6) 2.1实验目的 (6) 2.2实验内容及要求 (6) 2.3实验方案 (7) 2.4实验步骤 (7) 2.5故障及分析 (8) 2.6仿真与结果 (8) 2.7心得与体会 (9) 3意见和建议 (11) 4附录 (13)

1 数据通路实验 1.1 实验目的 综合应用掌握的简单组合电路和时序电路的设计方法,完成一个简单的数据通路的设计。 1.2 实验内容及要求 1. 根据下图给出的数据通路(图中R0、R1和ACC是寄存器,+是加法器,其它则是多路选择器),完成相应的Verilog程序设计,图中数据线的宽度为8位,要求可以扩充至16位或者是32位; 2. 根据下图给出的数据通路(图中SUM和NEXT是寄存器,Memory是存储器,+是加法器,==0是比较器,其它则是多路选择器),完成相应的Verilog程序设

计,图中数据线的宽度为8位,要求可以扩充至16位或者是32位。 实验要求:程序必须自己编写,满足数据通路设计要求,综合结果正确。 1.3 实验方案 根据要求,先把选择器、加法器、寄存器、比较器和存储器分模块编写,在主模块中根据数据通路调用即可。题目中要求数据线宽度为8位,并且可以扩充至16位或32位,所以在前面定义WIDTH,利用parameter的参数传递功能来实现。 1.4 实验步骤 1.分模块编写代码(见附录) 2.运行综合Run Synthesis 3.综合成功后检查RTL Analysis中的电路图Schematic 1.5 故障及分析 刚开始跑出来很多线是断的,后来发现是引脚对应部分的代码没有写完整。后来加法器和ACC的参数顺序写错,导致接线与题给的不一致,发现问题后及时改

Verilog实验报告

2014-2015-2-G02A3050-1 电子电路设计训练(数字EDA部分) 实验报告 (2015 年5 月20 日) 教学班学号姓名组长签名成绩 自动化科学与电气工程学院

目录 目录 (1) 实验一、简单组合逻辑和简单时序逻辑 (1) 1.1 实验任务1——简单组合逻辑 (1) 1.1.1 实验要求 (1) 1.1.2 模块的核心逻辑设计 (1) 1.1.3 测试程序的核心逻辑设计 (1) 1.1.4 仿真实验关键结果及其解释 (2) 1.2 实验任务2——简单时序逻辑 (3) 1.2.1 实验要求 (3) 1.2.2 模块的核心逻辑设计 (3) 1.2.3 测试程序的核心逻辑设计 (3) 1.2.4 仿真实验关键结果及其解释 (4) 1.3 实验小结 (4) 实验二、条件语句和always过程块 (5) 2.1 实验任务1——利用条件语句实现计数分频时序电路 (5) 2.1.1 实验要求 (5) 2.1.2 模块的核心逻辑设计 (5) 2.1.3 测试程序的核心逻辑设计 (6) 2.1.4 仿真实验关键结果及其解释 (7) 2.2 实验任务2——用always块实现较复杂的组合逻辑电路 (8) 2.2.1 实验要求 (8) 2.2.2 模块的核心逻辑设计 (8) 2.2.3 测试程序的核心逻辑设计 (9) 2.2.4 仿真实验关键结果及其解释 (10) 2.3 实验小结 (11) 实验三、赋值、函数和任务 (12) 3.1 实验任务1——阻塞赋值与非阻塞赋值的区别 (12) 3.1.1 实验要求 (12) 3.1.2 模块的核心逻辑设计 (12) 3.1.3 测试程序的核心逻辑设计 (13) 3.1.4 仿真实验关键结果及其解释 (14) 3.2 实验任务2——在Verilog HDL中使用函数 (16) 3.2.1 实验要求 (16) 3.2.2 模块的核心逻辑设计 (16) 3.2.3 测试程序的核心逻辑设计 (18) 3.2.4 仿真实验关键结果及其解释 (19) 3.3 实验任务3——在Verilog HDL中使用任务 (20) 3.3.1 实验要求 (20) 3.3.2 模块的核心逻辑设计 (20) 3.2.3 测试程序的核心逻辑设计 (21)

verilog实验之密码箱实验报告

Verilog实现密码箱 1.功能概述 小脚丫开发板的有4位拨码开关,可以表示数字0-9,有两个七段数码管,所以密码设为两位(00—99),初始密码00,利用四位拨码开关(sw)输入密码,,按下个位确认按键(low),在数码管上显示个位数字;再次输入密码,按下十位确认按键(high),在数码管上显示十位数字。按下确认按键(enter),比较密码正误,若正确,实现开锁功能,用led8灯亮表示;错误,实现报错功能,用led1灯亮表示;连续错三次,实现警报功能,用8个灯全亮表示,此时只有重置(rst)才能重新输入密码。初始密码为21。为保证安全性,只有在开锁状态下,才可修改密码,修改拨码开关数值,按下个位确认按键(low),设置新密码个位,再次修改拨码开关数值,按下个位确认按键(high),设置新密码十位(实际上两个位密码修改与输入顺序不影响)。再按下重置键(rst),即可重新输入密码。同时在使用按键时,注意到了消抖。 2.效果展示 密码错误

密码正确

修改后密码正确

视频展示(双击播放) 3.代码分析 一、密码显示在数码管上always@(*) //数码管显示控制模块

begin case(code_low) 4'd0:seg_led1=9'b000111111;//数码管1显示0 4'd1:seg_led1=9'b000000110;//1 4'd2:seg_led1=9'b001011011;//2 4'd3:seg_led1=9'b001001111;//3 4'd4:seg_led1=9'b001100110;//4 4'd5:seg_led1=9'b001101101;//5 4'd6:seg_led1=9'b001111101;//6 4'd7:seg_led1=9'b000000111;//7 4'd8:seg_led1=9'b001111111;//8 4'd9:seg_led1=9'b001101111;//9 default:seg_led1=9'b100111111;//0 endcase case(code_high) 4'd0:seg_led2=9'b000111111;//数码管2显示0 4'd1:seg_led2=9'b000000110;//1 4'd2:seg_led2=9'b001011011;//2 4'd3:seg_led2=9'b001001111;//3 4'd4:seg_led2=9'b001100110;//4 4'd5:seg_led2=9'b001101101;//5 4'd6:seg_led2=9'b001111101;//6

时序逻辑电路的Verilog_HDL实现实验报告

时序逻辑电路的Verilog HDL 实现 一.实验要求 (1):编写JK 触发器、8位数据锁存器、数据寄存器的Verilog HDL 程序,并实现其仿真及其测试程序; (2):在实验箱上设计含异步清零和同步使能的计数器。 (3):进行波形仿真测试后;画出仿真波形。 (4):写出实验心得 二.实验内容: (1)1.JK 触发器的元件符号如图7.14所示,其中J 、K 是数据输入端,CLR 是复位控制输入端,当CLR=0时,触发器的状态被置为0态;CLK 是时钟输入端;Q 和QN 是触发器的两个互补输出端。 JK 触发器的状态方程为 Q n+1 =J Q n +K Q n JK 触发器的verilog HDL 程序 module jkff_rs(clk,j,k,q,rs,set); input clk,j,k,set,rs; output reg q; always@(posedge clk,negedge rs,negedge set) begin if(!rs) q<=1'b0; else if(!set) q<=1'b1; else case({j,k}) 2'b00:q<=q; 2'b01:q<=1'b0; 2'b10:q<=1'b1; 2'b11:q<=~q; default:q<=1'bx; endcase end endmodule JK 触发器的功能:带异步清0,异步置1(低电平有效) JK 触发器的仿真结果 JK 触发器的元件符号

2.8位数据锁存器锁存器元件符号如图所示。CLR是复位控制输入端,当CLR=0时,8位数据输出Q[7..0]=00000000。ENA是使能控制输入端,当ENA=1时,锁存器处于工作状态,输出Q[7..0]=D[7..0];ENA=0时,锁存器的状态保持不变。OE是三态输出控制端,当OE=1时,输出为高阻态;OE=0时,锁存器为正常输出状态。 8位数据锁存器元件符号 8位数据锁存器的verilog HDL程序 module tt1373(le,oe,q,d); input le,oe; input[7:0] d; output reg[7:0] q; always @(le,oe,d) begin if((!oe)&&(le))q<=d; else q<=8'bz; end endmodule

Verilog流水灯实验报告

流水灯实验报告 实验二 流水灯 一、 实验目的 学会编写一个简单的流水灯程序并掌握分频的方法。熟悉Modelsim 仿真软件的使用。 二、 实验要求 用Quartus 编写流水灯程序,在Modelsim 软件中进行仿真。 三、 实验仪器和设备 1、 硬件:计算机 2、 软件:Quartus 、Modelsim 、(UE ) 四、 实验内容 1、 将时钟周期进行分频。 2、 编写Verilog 程序实现LED 等依次亮灭,用Modelsim 进行仿真,绘制波形图。 五、 实验设计 (一)分频原理 已知时钟周期f 为50MHz ,周期T 为1/f ,即20ns 。若想得到四分频计数器,即周期为80ns 的时钟,需要把时钟进行分频。即每四个时钟周期合并为一个周期。原理图如图1所示。 rst_n clk clk_4 图1 四分频原理图 (二)流水灯设计思路 1、实现4盏LED 灯依次隔1s 亮灭,即周期为1s ; 2、计算出频率f 为1/T=1Hz ; 3、设置计数器cnt ,当检测到clk 上升沿时开始计数,当cnt 计数到24_999_999时,clk_4跳变为1,LED 灯亮起,当cnt 计数49_999_999时,clk_4置0,LED 灯熄灭。 4、给LED 赋初值4’b0001,第一盏灯亮。 5、利用位拼接,实现循环。 (三)设计框图

FPGA clk cnt LED LED 图2 设计基本框图 (四)位拼接的用法 若输入a=4'b1010,b=3'b101,c=4'b0101,想要使输出d=5'b10001 用位拼接,符号“{ }”:d<={b[2:1],c[1],a[2:1]} 即把b 的低1~2位10,c 的低1位0,a 的低1~2位01拼接起来,得到10 0 01。 流水灯 4'b0001 4'b0010 4'b0100 4'b1000 相当于把低三位左移,并最高位放在最低位。 用位拼接可写为: led<={led[2:0], led[3]}; 低三位 最高位 六、 实验方法和步骤 (一)时钟分频 1、 编写分频程序。 2、 编写测试程序。 3、 进行仿真,波形如图3所示。 图3 分频仿真结果 (二)流水灯 1、编写分频程序。

西安邮电大学verilog HDL 实验报告

西安邮电大学verilog课程实验报告 院系:电子工程学院 专业班级:电子10班 学号:(17) 姓名: 222 2013年6月8 日

实验一门级建模 1.实验内容 (1)使用nand门编写双输入端的与门,或门及非门my_or,my_and和my_not门构造一个双输入端 的xor门,其功能是计算z=x’y+xy’,其中x和y为输入,z为输出;编写激励模块对x和y的四种输入组合进行测试仿真。 (2)本章中的一位全加器使用乘积项之和的形式可以表示为: Sum=a*b*c_in+a’b*c_in’+a’b’*c_in+a*b’*c_in’ C_out=a*b+b*c_in+a*c_in 其中a,b和c_in为输入,sum和c_out为输出;只使用与门、或门、非门实现一个一位全加器,写出Verilog描述,限制是每个门最多有四个输入端。编写激励模块对功能进行检查,并对全部的输入组合进行测试。 2.实验目的 (1)掌握门基本类型,并学习Verilog提供的门级原语 (2)理解门的实例引用 (3)熟悉门级建模的一般步骤 (4)熟悉编程软件 3.实验步骤 (1)先根据题目要求构建my_or,my_and,my_not;其次根据所设计的门来设计my_xor,并且编写激励对所设计的进行验证 实验代码及仿真激励代码如下 module myxor(out,x,y); output out; input x,y; wire x,y; wire y0,y1,y2,y3; my_not mynot0(y0,x,1); my_not mynot1(y1,y,1); my_and myand0(y2,y,y0); my_and myand1(y3,y1,x);

EDA技术与Verilog HDL技术实验报告

EDA技术与Verilog HDL技术实验报告 班级:09电信实验班姓名:虞鸿鸣组别:Q09610137 实验:交通灯控制 一、实验目的: 1、运用Verilog HDL综合编辑软件实现相应功能; 2、进一步使用EDA技术解决实际问题; 3、进一步使用EDA工具箱,提高对硬件电路的认识。 二、实验仪器 PC计算机、EDA实验工具箱 三、简要原理 1. 能显示十字路口东西、南北两个方向的红、黄、绿的指示状态 用两组红、黄、绿三色灯作为两个方向的红、黄、绿灯。变化规律为:东西绿灯,南北红灯→东西黄灯,南北红灯→东西红灯,南北绿灯→东西红灯,南北黄灯→东西绿灯,南北红灯……依次循环。 2. 能实现正常的倒计时功能 用两组数码管作为东西和南北方向的允许或通行时间的倒计时显示,显示时间为红灯45秒、绿灯40秒、黄灯5秒。 3. 能实现紧急状态处理的功能 (1) 出现紧急状态(例如消防车,警车执行特殊任务时要优先通行)时,两路上所有车禁止通行,红灯全亮; (2) 显示到计时的两组数码管闪烁; (3) 计数器停止计数并保持在原来的状态; (4) 特殊状态解除后能返回原来状态继续运行。 4. 能实现系统复位功能 系统复位后,东西绿灯,南北红灯,东西计时器显示40秒,南北显示45秒。 5. 用VHDL语言设计符合上述功能要求的交通灯控制器,并用层次化设计方法设计该电路。 6. 控制器、置数器的功能用功能仿真的方法验证,可通过有关波形确认电

路设计是否正确。 7. 完成电路全部设计后,通过系统实验箱下载验证设计课题的正确性。 四、设计思路 EN、CLK、RST、URGEN分别为使能信号、时钟信号、复位信号和紧急情况信号; num1,num2分别为东西方向的倒计时和南北方向的倒计时,两个八位数码管,硬件接有译码芯片; light1,light2分别为东西方向的交通灯和南北方向的交通灯中红、黄、绿三色位置; tim1,tim2分别为东西和南北方向的交通的灯控制信号,高电平时有效; pb1,pb2分别为寄存紧急情况前交通灯状态变量的标志信号,高电平有效; state1,state2分别为东西、南北方向的交通灯状态信号,每个方向有三种状态,即00、01、11; 五、源代码及注析 module TRAFFIC_LI(EN,CLK,RST,URGEN,num1,num2,light1,light2); input EN,CLK,RST,URGEN;//EN、CLK、RST、URGEN分别为使能信号、时钟信号、复位信号和紧急情况信号 output[7:0] num1,num2;//num1,num2分别为东西方向的倒计时和南北方向的倒计时,两个八位数码管,硬件接有译码芯片 output[2:0] light1,light2;//light1,light2分别为东西方向的交通灯和南北方向的交通灯中红、黄、绿三色位置 reg tim1,tim2,pb1,pb2;//tim1,tim2分别为东西和南北方向的交通的灯控制信号,高电平时有效 //pb1,pb2分别为寄存紧急情况前交通灯状态变量的标志信号,高电平有效 reg[1:0]state1,state2;//state1,state2分别为东西、南北方向的交通灯状态信号,每个方向有三种状态,即00、01、11 reg[2:0]light1,light2,light3,light4;//light3,light4用以寄存紧急情况前交通灯

计算机组成CPU数据通路verilog实验报告.doc

计算机组成与系统结构实验报告 院(系):计算机科学与技术学院 专业班级: 学号: 姓名: 同组者: 指导教师: 实验时间: 2012 年 5 月 23 日 实验目的:

完成处理器的单周期cpu的设计。 实验仪器: PC机(安装Altebra 公司的开发软件 QuartusII)一台 实验原理: 控制器分为主控制器和局部ALU控制器两部分。主控制器的输入为指令操作码op,输出各种控制信号,并根据指令所涉及的ALU运算类型产生ALUop,同时,生成一个R-型指令的控制信号R-type,用它来控制选择将ALUop输出作为ALUctr信号,还是根据R-型指令中的func字段来产生ALUctr信号。 实验过程及实验记录: 1.设计过程: 第一步:分析每条指令的功能,并用RTL来表示。 第二步:根据指令的功能给出所需的元件,并考虑如何将它们互连。 第三步:确定每个元件所需控制信号的取值。 第四步:汇总各指令涉及的控制信号,生成所反映指令与控制信号之间的关系图。 第五步:根据关系表,得到每个控制信号的逻辑表达式,据此设计控制电路。

2.完成代码的编写,并调试运行。 1)control module Control(op,func,Branch,Jump,RegDst,ALUSrc,ALUctr,MemtoReg, RegWr,MemWr,ExtOp); input [5:0] op,func; output reg Branch,Jump,RegDst,ALUSrc,MemtoReg,RegWr,MemWr,ExtOp; output reg [2:0] ALUctr; always @(op) case(op) 6'b000000: begin Branch=0;Jump=0;RegDst=1;ALUSrc=0;MemtoReg=0;RegWr=1;MemWr =0; case(func) 6'b100000:ALUctr=3'b001; 6'b100010:ALUctr=3'b101; 6'b100011:ALUctr=3'b100; 6'b101010:ALUctr=3'b111; 6'b101011:ALUctr=3'b110; endcase end 6'b001101: begin Branch=0;Jump=0;RegDst=0;ALUSrc=1;MemtoReg=0;RegWr=1;MemWr =0;ExtOp=0;ALUctr=3'b010; end 6'b001001: begin Branch=0;Jump=0;RegDst=0;ALUSrc=1;MemtoReg=0;RegWr=1;MemWr =0;ExtOp=1;ALUctr=3'b000; end

相关主题
文本预览
相关文档 最新文档