文档库 最新最全的文档下载
当前位置:文档库 › Verilog 实验指导书

Verilog 实验指导书

Verilog 实验指导书
Verilog 实验指导书

实验一简单组合逻辑电路的设计

一实验要求

1.用verilog HDL语言描写出简单的一位数据比较器及其测试程序;

2.用测试程序对比较器进行波形仿真测试;画出仿真波形;

3. 总结实验步骤和实验结果。

二实验原理与内容

这是一个可综合的数据比较器,很容易看出它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。在Verilog HDL中,描述组合逻辑时常使用assign结构。注意equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格式。

模块源代码:

//--------------- compare.v -----------------

module compare(equal,a,b);

input a,b;

output equal;

assign equal=(a==b)?1:0; //a等于b时,equal输出为1;a不等于b时,

//equal输出为0。

endmodule

测试模块用于检测模块设计得正确与否,它给出模块的输入信号,观察模块的内部信号和输出信号,如果发现结果与预期的有所偏差,则要对设计模块进行修改。

测试模块源代码:

`timescale 1ns/1ns //定义时间单位。

module comparetest;

reg a,b;

wire equal;

initial //initial常用于仿真时信号的给出。

begin

a=0;

b=0;

#100 a=0; b=1;

#100 a=1; b=1;

#100 a=1; b=0;

#100 $stop; //系统任务,暂停仿真以便观察仿真波形。

end

compare compare1(.equal(equal),.a(a),.b(b)); //调用模块。

endmodule

实验二 简单时序逻辑电路的设计

一 实验要求

1.用verilog HDL 语言描写出简单的二分之一分频器及其测试程序;

2.用测试程序对分频器进行波形仿真测试;画出仿真波形;

3.总结实验步骤和实验结果。

二 实验原理与内容

在Verilog HDL 中,相对于组合逻辑电路,时序逻辑电路也有规定的表述方式。在可综合的Verilog HDL 模型,我们通常使用always 块和 @(posedge clk)或 @(negedge clk)的结构来表述

modelsim6.0使用教程

1.modelsim简介

Modelsim仿真工具是Model公司开发的。它支持Verilog、VHDL以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在Dataflow窗口查看某一单元或模块的输入输出的连续变化等,比quartus自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。

对于初学者,modelsim自带的教程是一个很好的选择,在Help->SE PDF Documentation->Tutorial里面.它从简单到复杂、从低级到高级详细地讲述了modelsim的各项功能的使用,简单易懂。但是它也有缺点,就是它里面所有事例的初期准备工作都已经放在example文件夹里,直接将它们添加到modelsim就可以用,它假设使用者对当前操作的前期准备工作都已经很熟悉,所以初学者往往不知道如何做当前操作的前期准备。

2. 安装

3. Modelsim仿真方法

Modelsim的仿真分为前仿真和后仿真,下面先具体介绍一下两者的区别。

3.1 前仿真

前仿真也称为功能仿真,主旨在于验证电路的功能是否符合设计要求,其特点是不考虑电路门延迟与线延迟,主要是验证电路与理想情况是否一致。可综合FPGA代码是用RTL级代码语言描述的,其输入为RTL级代码与Testbench.

3.2 后仿真

后仿真也称为时序仿真或者布局布线后仿真,是指电路已经映射到特定的工艺环境以后,综合考虑电路的路径延迟与门延迟的影响,验证电路能否在一定时序条件下满足设计构想的过程,是否存在时序违规。其输入文件为从布局布线结果中抽象出来的门级网表、Testbench和扩展名为SDO或SDF的标准时延文件。SDO或SDF的标准时延文件不仅包含门延迟,还包括实际布线延迟,能较好地反映芯片的实际工作情况。一般来说后仿真是必选的,检查设计时序与实际的FPGA运行情况是否一致,确保设计的可靠性和稳定性。

3.3 Modelsim仿真的基本步骤

Modelsim的仿真主要有以下几个步骤:建立库并映射库到物理目录;编译原代码(包括Testbench;执行仿真。

3.3.1 建立库

在执行一个仿真前先建立一个单独的文件夹,后面的操作都在此文件下进行,以防止文件间的误操作。然后启动Modelsim将当前路径修改到该文件夹下,修改的方法是点File->Change Directory选择刚刚新建的文件夹见下图。

仿真库是存储已编译设计单元的目录,modelsim 中有两类仿真库,一种是工作库,默认的库名为work,另一种是资源库。Work 库下包含当前工程下所有已经编译过的文件。所以编译前一定要建一个work 库,而且只能建一个work 库。资源库存放work 库中已经编译文件所要调用的资源,这样的资源可能有很多,它们被放在不同的资源库内。例如想要对综合在cyclone 芯片中的设计做后仿真,就需要有一个名为cyclone_ver 的资源库。

映射库用于将已经预编译好的文件所在的目录映射为一个modelsim 可识别的库,库内的文件应该是已经编译过的,在Workspace 窗口内展开该库应该能看见这些文件,如果是没有编译过的文件在库内是看不见的。

建立仿真库的方法有两种。一种是在用户界面模式下,点File->New->Library

出现下面的对话框,选择

a new library and a logical mapping to it,在Library

Name 内输入要创建库的名称,然后OK ,

即可生成一个已经映射的新库。另一种 方法是在Transcript 窗口输入以下命令: vlib work /* 库名 */

vmap work work

/* 映射的逻辑名称 存放的物理路径 */ 如果要删除某库,只需选中该库名,点右键选择Delete 即可。

需要注意的是不要在modelsim 外部的系统盘内手动创建库或者添加文件到库里;也不要modelsim 用到的路径名或文件名中使用汉字,因为modelsim 可能无法识别汉字而导致莫名其妙的错误。

3.3.2 编写与编译测试文件

在编写Testbench 之前最好先将要仿真的目标文件编译到工作库中,点Compile->Compile 或需要注意的是不要在modelsim 外部的系统盘内手动创建库或者添加文

件到库里;也不要modelsim 用到的路径名或文件名中使用汉字,因为modelsim 可能无法识别汉字而导致莫名其妙的错误。 3.3.2 编写与编译测试文件

在编写Testbench 之前最好先将要仿真的目标文件编译到工作库中,点Compile->Compile 或将出现下面的对话框,

在Library 中选择工作库,在查找范围内找到要仿真的目标文件,然后点Compile 和Done 。或在命令行输入vlog fulladder.v 。此时目标文件已经编译到工作库中,在Library 中展开工作库会

发现该文件。

当对要仿真的目标文件进行仿真时需要给文件中的各个输入变量提供激励源,并对输入波形进行的严格定义,这种对激励源定义的文件称为Testbench,即测试台文件。下面先讲一下Testbench的产生方法。

我们可以在modelsim内直接编写Testbench,而且modelsim还提供了常用的各种模板。具体步骤如下:

⑴.执行File->New->Source->verilog,或者直接点击工具栏上的新建图标,会出现一个verilog 文档编辑页面,在此文档内设计者即可编辑测试台文件。需要说明的是在Quartus中许多不可综合的语句在此处都可以使用,而且testbench只是一个激励源产生文件,只要对输入波形进行定义以及显示一些必要信息即可,切记不要编的过于复杂,以免喧宾夺主。

⑵.Modelsim提供了很多Testbench模板,我们直接拿过来用可以减少工作量。点View->Source->Show Language Templates然后会出现一个加载工程,接着你会发现在刚才的文档编辑窗口左边出现了一个Language Templates窗口,见下图。

展开Verilog项,双击Creat Testbench会出现一个创建向导,见下图

选择Specify Design Unit工作库下的目标文件,点Next,出现下面对话框

可以指定Testbench的名称以及要编译到的库等,此处我们使用默认设置直接点Finish。这时在Testbench内会出现对目标文件的各个端口的定义还有调用函数

接下来,设计者可以自己往Testbench内添加内容了,然后保存为.v格式即可。按照前

面的方法把Testbench文件也编译到工作库中。

3.3.3 执行仿真

因为仿真分为前仿真和后仿真,下面分别说明如何操作。

⑴. 前仿真

前仿真,相对来说是比较简单的。在上一步我们已经把需要的文件编译到工作库内了,现在我

们只需点simulate->Start Simulation或快捷按钮会出现start simulate对话框。点击Design标签选择Work库下的Testbench文件,然后点OK即可,也可以直接双击Testbench文件,此时会出现下面的界面。

在主界面中会多出来一个Objects窗口,里面显示Testbench里定义的所有信号引脚,在Workspace里也会多出来一个Sim标签。右键点击fuladder_tb.v,选择Add->Add to Wave,如下图所示。然后将出现Wave窗口,现在就可以仿真了,见下图。

窗口里面已经出现了待仿真的各个信号,点将开始执行仿真到100ns,继续点仿真波形也将继

续延伸,见下图.

若点,则仿真一直执行,直到点才停止仿真。也可以在命令行输入命令:

run @1000

则执行仿真到1000ns,后面的1000也可以是别的数值,设计者可以修改。在下一次运行次命令时将接着当前的波形继续往后仿真。

对于复杂的设计文件,最好是自己编写testbench文件,这样可以精确定义各信号以及各个信号之间的依赖关系等,提高仿真效率。对于一些简单的设计文件,也可以在波形窗口自己创建输入波形进行仿真。具体方法是双击work库里的目标仿真文件fulladder.v,然后点workspace窗口中出现的sim标签,右键点击fuladder,选择Add->Add to Wave,如下图所示。然后将出现Wave窗口。

在wave窗口中选中要创建波形的信号,如此例中的a,然后右键点击,选择Create/Modify/Wave项出现下面的窗口

在Patterns中选择输入波形的类型,然后分别在右边的窗口中设定起始时间、终止时间以及单位,再点Next出现下面的窗口,我们把初始值的HiZ改为0,

然后修改时钟周期和占空比,然后点Finish.接着继续添加其他输入波形,出现下面的结果。前面出现的红点表示该波形是可编辑的。后面的操作与用testbench文本仿真的方法相同

如果设计者只想查看指定信号的波形,可以先选中objects窗口中要观察的信号,然后点右键选择Add to Wave->Selected signals,见下图,那么在Wave窗口中只添加选中的信号。

如果要保存波形窗口当前信号的分配,可以点File->Save->Format,在出现的对话框中设置保存路径及文件名,保存的格式为.do文件。如果是想导出自己创建的波形(在文章最后有详细的解释)可以选择File->Export Waveform在出现的对话框中选择EVCD File并进行相关设置即可,如果导入设计的波形选择File->Import ECVD即可。

在主界面中点View->Debug Windows->Dataflow可以看到会出现dataflow窗口,在objects 窗口中拖一个信号到该窗口中,你会发现在dataflow窗口中出现你刚才选中信号所在的模块,如果双击模块的某一引脚,会出现与该引脚相连的别的模块或者引线,见下图。

在dataflow窗口中点View->Show Wave,会在dataflow窗口中出现一个wave窗口,双击上面窗口

中的某一模块,则在下面的wave窗口中出现与该模块相连的所有信号,如果已经执行过仿真,在wave窗口中还会出现对应的波形,见下图。

在波形窗口中拖动游标,上面模块的引脚信号的值也会随着游标当前位置的改变而改变。

如果要在modelsim中修改原设计文件,在文档页面点击右键,取消Read Only,即可修改,修改后继续仿真。如果想结束仿真可以点Simulate->End Simulation,或直接在命令行输入quit -sim,此时quartus也会显示结束所有编译过程。

⑵.后仿真

后仿真与前仿真的步骤大体相同,只不过中间需要加添加仿真库、网表和延时文件的步骤。

后仿真的前提是quartus已经对要仿真的目标文件进行编译,并生成modelsim仿真所需要的.vo文件(网表文件)和.sdo文件(时延文件),具体操作过程又有两种方法,一种是通过Quartus 调用Modelsim,Quartus在编译之后自动把仿真需要的.vo文件以及需要的仿真库加到modelsim 中,操作简单;一种是手动将需要的文件和库加入modelsim进行仿真,这种方法可以增加主观能动性,充分发挥modelsim的强大仿真功能。

控制工程基础实验指导书(答案) 2..

实验二二阶系统的瞬态响应分析 一、实验目的 1、熟悉二阶模拟系统的组成。 2、研究二阶系统分别工作在ξ=1,0<ξ<1,和ξ> 1三种状态下的单 位阶跃响应。 3、分析增益K对二阶系统单位阶跃响应的超调量σP、峰值时间tp和调 整时间ts。 4、研究系统在不同K值时对斜坡输入的稳态跟踪误差。 5、学会使用Matlab软件来仿真二阶系统,并观察结果。 二、实验仪器 1、控制理论电子模拟实验箱一台; 2、超低频慢扫描数字存储示波器一台; 3、数字万用表一只; 4、各种长度联接导线。 三、实验原理 图2-1为二阶系统的原理方框图,图2-2为其模拟电路图,它是由惯性环节、积分环节和反号器组成,图中K=R2/R1,T1=R2C1,T2=R3C2。 图2-1 二阶系统原理框图

图2-1 二阶系统的模拟电路 由图2-2求得二阶系统的闭环传递函 12 22 122112 /() (1)()/O i K TT U S K U S TT S T S K S T S K TT ==++++ :而二阶系统标准传递函数为 (1)(2), 对比式和式得 n ωξ== 12 T 0.2 , T 0.5 , n S S ωξ====若令则。调节开环增益K 值,不仅能改变系统无阻尼自然振荡频率ωn 和ξ的值,可以得到过阻尼(ξ>1)、 临界阻尼(ξ=1)和欠阻尼(ξ<1)三种情况下的阶跃响应曲线。 (1)当K >0.625, 0 < ξ < 1,系统处在欠阻尼状态,它的单位阶跃响应表达式为: 图2-3 0 < ξ < 1时的阶跃响应曲线 (2)当K =0.625时,ξ=1,系统处在临界阻尼状态,它的单位阶跃响应表达式为: 如图2-4为二阶系统工作临界阻尼时的单位响应曲线。 (2) +2+=222n n n S S )S (G ωξω ω1 ()1sin( ) (3) 2-3n t o d d u t t tg ξωωωω--=+=式中图为二阶系统在欠阻尼状态下的单位阶跃响应曲线 e t n o n t t u ωω-+-=)1(1)(

实验指导书

Matlab实验指导书 河北大学电子信息工程学院 2004年1月

目录 MATLAB实验教学计划 (2) 实验一MATLAB基本操作 (3) 实验二MATLAB图形系统......................................................... . (5) 实验三 MATLAB程序设计 (6) 实验四 MATLAB基本应用领域 (7) 实验五设计性综合实验1---数字信道编译码 (14) 实验六设计性综合实验2---fir滤波器设计................................. . (16) 2

MATLAB实验教学计划 指导教师:郑晓昆薛文玲王竹毅学时数:12学时周4学时2次实验,共3周6次实验,第7—9教学周,每次实验2学时 所用仪器设备:MATLAB7.0实验软件系统 实验指导书:Matlab实验指导书 自编 实验参考书:, 楼顺天等编著, 西安电子科大出版社,06年5月第二版 实验项目: A, MATLAB基本操作 内容:矩阵操作,基本数学函数,逻辑函数操作等; 要求:循序渐进完成P83练习题1—10 B, MATLAB图形系统 内容:图形绘制,图形标注,对数和极坐标,坐标轴控制,颜色控制等要求:循序渐进完成P146练习题1—10 C, MATLAB程序设计 内容:脚本script和函数function认识,流程控制,参数交互输入,基本程序设计技巧练习,程序调试DEBUG等 要求:循序渐进完成P184练习题1—10 D, MATLAB基本应用领域 内容:线性代数,多项式与内插,曲线拟合,数据分析与统计,泛函基础等 要求:循序渐进完成P146练习题1—4,6—19 E, 设计性综合实验----数字信道编译码 内容:1数字通信系统信道编码AMI编译码 2数字通信系统信道编码HDB3编译码 F,设计性综合实验----fir滤波器设计 内容:设计一个有限冲击相应数字滤波器FIR是该滤波器能够滤出规定频率以上的信号,而该频率以下的信号不受影响。 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 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 -----------------------------

原创:VHDL verilog 互相调用的例子

给两个例子, 一个是VHDL做顶层调用verilog 一个是verilog 做顶层调用VHDL VHDL调用verilog: module sync_block #( parameter INITIALISE = 2'b00 ) ( input clk, // clock to be sync'ed to input data_in, // Data to be 'synced' output data_out // synced data ); //VHD entity dcm_reset is port( ref_reset : in std_logic; -- Synchronous reset in ref_clk domain ref_clk : in std_logic; -- Reliable reference clock of known frequency (125MHz) dcm_locked : in std_logic; -- The DCM locked signal dcm_reset : out std_logic -- The reset signal which should be connected to the DCM ); end dcm_reset; component sync_block port ( clk : in std_logic; -- clock to be sync'ed to data_in : in std_logic; -- Data to be 'synced' data_out : out std_logic -- synced data ); end component; dcm_locked_sync_tx : sync_block port map( clk => ref_clk, data_in => dcm_locked, data_out => dcm_locked_sync ); verilog调用VHDL:(目标还是上述VHDL模块) module gmii_if ( …… ); dcm_reset rx_dcm_reset ( .ref_reset (tx_reset), .ref_clk (tx_clk),

实验指导书

混凝土基本理论及钢桁架静力测试试验指导书

试验一、钢筋混凝土受弯构件正截面破坏试验 一、试验目的 1.了解受弯构件正截面的承载力大小、挠度变化及裂缝出现和发展过程; 2.观察了解受弯构件受力和变形过程的三个工作阶段及适筋梁的破坏特征; 3.测定受弯构件正截面的开裂荷载和极限承载力,验证正截面承载力计算方法。 二、试件、试验仪器设备 1.试件特征 (1). 根据试验要求,试验梁的混凝土强度等级为C20,纵向受力钢筋强度等级I级。 (2). 试件尺寸及配筋如图1所示,纵向受力钢筋的混凝土净保护层厚度为15mm 。 (3). 梁的中间500mm 区段内无腹筋,其余区域配有 6@60的箍筋,以保证不发生斜 截面破坏。 (4). 梁的受压区配有两根架立筋,通过箍筋与受力筋绑扎在一起,形成骨架,保证受力钢筋处在正确的位置。 2.试验仪器设备 (1). 静力试验台座、反力架、支座及支墩 (2). 20T 手动式液压千斤顶 (3). 读数显微镜及放大镜 (4). 位移计(百分表)及磁性表座 三、试验装置及测点布置 1.试验装置见图2 (1). 在加荷架中,用千斤顶通过分配梁进行两点对称加载,使简支梁跨中形成长 500mm 的纯弯曲段(忽略梁的自重)。 (2). 构件两端支座构造应保证试件端部转动及其中一端水平位移不受约束,基本符 合铰支承的要求。 2.测点布置 梁的跨中及两个对称加载点各布置一位移计f 3~f 5,量测梁的整体变形,考虑在加载的过程中,两个支座受力下沉,支座上部分别布置位移测点f 1和f 2,以消除由于支座下沉对挠度测试结果的影响。 图1 试件尺寸及配筋图

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;

R语言实验指导书(二)

R语言实验指导书(二) 2016年10月27日

实验三创建和使用R语言数据集 一、实验目的: 1.了解R语言中的数据结构。 2.熟练掌握他们的创建方法,和函数中一些参数的使用。 3.对创建的数据结构进行,排序、查找、删除等简单的操作。 二、实验内容: 1.向量的创建及因子的创建和查看 有一份来自澳大利亚所有州和行政区的20个税务会计师的信息样本 1 以及他们各自所在地的州名。州名为:tas, sa, qld, nsw, nsw, nt, wa, wa, qld, vic, nsw, vic, qld, qld, sa, tas, sa, nt, wa, vic。 1)将这些州名以字符串的形式保存在state当中。 2)创建一个为这个向量创建一个因子statef。 3)使用levels函数查看因子的水平。 2.矩阵与数组。

i.创建一个4*5的数组如图,创建一个索引矩阵如图,用这个索引矩 阵访问数组,观察结果。 3.将之前的state,数组,矩阵合在一起创建一个长度为3的列表。

4.创建一个数据框如图。 5.将这个数据框按照mpg列进行排序。 6.访问数据框中drat列值为3.90的数据。

三、实验要求 要求学生熟练掌握向量、矩阵、数据框、列表、因子的创建和使用。

实验四数据的导入导出 一、实验目的 1.熟练掌握从一些包中读取数据。 2.熟练掌握csv文件的导入。 3.创建一个数据框,并导出为csv格式。 二、实验内容 1.创建一个csv文件(内容自定),并用readtable函数导入该文件。 2.查看R语言自带的数据集airquality(纽约1973年5-9月每日空气质 量)。 3.列出airquality的前十列,并将这前十列保存到air中。 4.查看airquality中列的对象类型。 5.查看airquality数据集中各成分的名称 6.将air这个数据框导出为csv格式文件。(write.table (x, file ="", sep ="", https://www.wendangku.net/doc/1b10626412.html,s =TRUE, https://www.wendangku.net/doc/1b10626412.html,s =TRUE, quote =TRUE)) 三、实验要求 要求学生掌握从包中读取数据,导入csv文件的数据,并学会将文件导出。

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 结果如图所示:

VerilogHDL实例

本文档含有很多Verilog HDL例子://与门 module zxhand2(c,a,b); input a,b; output c; assign c= a & b; endmodule //或门 module zxhor2(c,a,b); input a,b; output c; assign c= a | b; endmodule //非门 module zxhnot2(c,b); input b; output c; assign c=~ b; endmodule ////异或门 module zxhxro2(c,a,b); input b; output c; assign c=a ^ b; endmodule 两选一电路 module data_scan(d0,d1,sel,q); output q; input d0,d1,sel; wire t1,t2,t3; n1 zxhand2(t1,d0,sel); n2 zxhnot2 (t4,sel); n3 zxhand2(t2,d1,t4); n4 zxhor2(t3,t1,t2);

assign q=t1; endmodule verilog HDL实例(一) 练习一.简单的组合逻辑设计 目的: 掌握基本组合逻辑电路的实现方法。 这是一个可综合的数据比较器,很容易看出它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。在Verilog HDL中,描述组合逻辑时常使用assign结构。注意 equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格式。 模块源代码: //--------------- compare.v ----------------- module compare(equal,a,b); input a,b; output equal; assign equal=(a==b)?1:0; //a等于b时,equal输出为1;a不等于b时, //equal输出为0。 endmodule 测试模块用于检测模块设计得正确与否,它给出模块的输入信号,观察模块的内部信号和输出信号,如果发现结果与预期的有所偏差,则要对设计模块进行修改。 测试模块源代码: `timescale 1ns/1ns //定义时间单位。 module comparetest; reg a,b; wire equal; initial //initial常用于仿真时信号的给出。 begin a=0; b=0; #100 a=0; b=1; #100 a=1; b=1; #100 a=1; b=0; #100 $stop; //系统任务,暂停仿真以便观察仿真波形。 end compare compare1(.equal(equal),.a(a),.b(b)); //调用模块。 Endmodule

实验指导书第2章

上机实验二 SPSS基本运行程序 一、实验目的 通过本次实验,要求掌握SPSS的基本运行程序,熟悉基本的编码方法、了解如何录入数据和建立数据文件,掌握基本的数据文件编辑与修改方法。 二、实验性质 必修,基础层次 三、主要仪器及试材 计算机及SPSS软件 四、实验内容 1.问卷编码 2.录入数据 3.保存数据文件 4.编辑数据文件 五、实验学时 2学时 六、实验方法与步骤 1.开机 2.找到SPSS的快捷按纽或在程序中找到SPSS,打开SPSS 3.认识SPSS数据编辑窗口 4.对一份给出的问卷进行编码和变量定义 5.按要求录入数据 6.练习基本的数据修改编辑方法 7.保存数据文件 8.关闭SPSS,关机。 七、实验注意事项

1.实验中不轻易改动SPSS 的参数设置,以免引起系统运行问题。 2.遇到各种难以处理的问题,请询问指导老师。 3.为保证计算机的安全,上机过程中非经指导老师和实验室管理人员同意,禁止使用软盘与移动硬盘。 4.每次上机,个人应按规定要求使用同一计算机,如因故障需更换,应报指导老师或实验室管理人员同意。 5.上机时间,禁止使用计算机从事与课程无关的工作。 八、上机作业 (一)试对以下问卷进行编码,并录入所选择的答案(加下划线为所选的答案 农户基本经营状况调查 1 家庭户性质:①本地户 ②外来户 (迁入年份:_1988_) 2.就业类型:①纯农户 ②非农户 ③农兼非 ④非兼农 ⑤未就业 离开农业已有__________年 4.兼业者从事非农产业情况 家里有 1 人参加非农劳动,是否壮劳力?① 是 ②否 业务范围:①工业 ②建筑业 ③运输 ④仓储 ⑤餐饮业 ⑥社会服务业 ⑦其他 工作年数 5 年,(按整数算,超过半年算一年) 投入时间大约占全年工作时间的% 70% 收入大约占全年总收入的%_______90%______

数字逻辑实验报告-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 实验指导书

实验一简单组合逻辑电路的设计 一实验要求 1.用verilog HDL语言描写出简单的一位数据比较器及其测试程序; 2.用测试程序对比较器进行波形仿真测试;画出仿真波形; 3. 总结实验步骤和实验结果。 二实验原理与内容 这是一个可综合的数据比较器,很容易看出它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。在Verilog HDL中,描述组合逻辑时常使用assign结构。注意equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格式。 模块源代码: //--------------- compare.v ----------------- module compare(equal,a,b); input a,b; output equal; assign equal=(a==b)?1:0; //a等于b时,equal输出为1;a不等于b时, //equal输出为0。 endmodule 测试模块用于检测模块设计得正确与否,它给出模块的输入信号,观察模块的内部信号和输出信号,如果发现结果与预期的有所偏差,则要对设计模块进行修改。 测试模块源代码: `timescale 1ns/1ns //定义时间单位。 module comparetest; reg a,b; wire equal; initial //initial常用于仿真时信号的给出。 begin a=0; b=0; #100 a=0; b=1; #100 a=1; b=1; #100 a=1; b=0; #100 $stop; //系统任务,暂停仿真以便观察仿真波形。 end compare compare1(.equal(equal),.a(a),.b(b)); //调用模块。 endmodule

verilog_FPGA实例

一、组合逻辑实验 (2) 实验13X8译码器程序 (2) 实验2二-十进制译码器 (2) 实验3BCD码—七段数码管显示译码器 (3) 实验48-3编码器 (4) 实验58-3优先编码器 (4) 实验6十—二进制编码器 (5) 实验7三选一数据选择器 (5) 实验8半加器 (6) 实验9全加器 (7) 实验10半减器 (8) 实验11全减器 (8) 实验12多位数值比较器 (9) 实验13奇偶校验 (9) 实验14补码生成 (10) 实验158位硬件加法器的设计 (10) 实验164位并行乘法器 (10) 实验17七人表决器 (10) 实验18格雷码变换 (11) 二、时序逻辑实验 (11) 实验1D触发器 (11) 实验2JK触发器 (12) 实验3四位移位寄存器 (12) 实验4异步计数器 (13) 实验5同步计数器 (14) 实验6可逆计数器 (15) 实验7步长可变的加减计数器 (16) 实验8含异步清0和同步时钟使能的4位加法计数器 (17) 实验9顺序脉冲发生器 (18) 实验10序列信号发生器 (18) 实验11用状态机实现串行数据检测器 (19) 实验12分频器 (20) 实验13Moore状态机 (21) 实验14Mealy状态机 (23) 实验15三层电梯 (24) 实验16性线反馈移位寄存器(LFSR)设计 (32) 实验17正负脉宽数控调制信号发生器 (32) 三、存储器设计 (34) 实验1只读存储器(ROM) (34) 实验2SRAM (34) 实验3FIFO (35) 四、扩展接口实验 (39) 实验1流水灯 (39) 实验2VGA彩色信号显示控制器设计 (40)

实验指导书实验二_SolidWorks建模1

实验二SolidWorks草绘特征和放置特征操作(一) 一、实验目的 1.掌握基本零件建模的一般步骤和方法 2.掌握SolidWorks草绘特征:拉伸凸台、拉伸切除、旋转凸台、旋转切除、扫描、放样的操 作方法。 3.掌握放置(应用)特征:钻孔特征、倒角特征、圆角特征、抽壳特征、拔模斜度特征、筋的 操作方法 二、实验内容 完成下列下列零件造型 三、实验步骤 1. 连接件设计 完成如图1所示模型。 (1)单击【新建】按钮一1,新建一个零件文件。 (2)选取前视基准面,单击【草图绘制】按钮一I,进入草图绘制,绘制草图,如图2 所示。 图1连接件图2草图 ⑶ 单击【拉伸凸台/基体】按钮,出现【拉伸】属性管理器,在【方向】下拉列表 框内选择【两侧对称】选项,在【深度】文本框内输入" 54mm ”,单击【确定】 按钮,如图3所示。 (4)单击【基准面】按钮一1,出现【基准面】属性管理器,其中第一参考选择图形下底面, 然后单击【两面夹角】按钮日,在【角度】文本框内输入"120°,然后在第二参考中选择 图形的一条下边线。单击【确定】按钮¥,,建立新基准面,如

错误!未找到引用源。所示。 图4建立基准面 (5) 在设计树中右击基准面 1选择“反转法线” 卜,然后再单击基准 面 1单选择 【草图绘制】按钮 ,进入草图绘制,单击【正视于】按钮 ,绘制草图,如图 4所示。 边线 底面 图4草图

(6) 单击【拉伸凸台/基体】按钮 ,出现【拉伸】属性管理 器,在【终止条件】下拉 列表框内选择【给定深度】选项,在【深度】文本框内输入“ 12mm ”,单击【确 定】按钮1 如图5所示。 (7) 选取基体上表面,单击【草图绘制】 按钮_1,进入草图绘制,使用中心线工具 上表面的中心位置绘制直线,注意不要捕捉到表面边线,如图 6所示。 图6中心线 (8) 单击【等距实体】按钮丄,出现【等距实体】属性管理器,在【等距距离】文本框 内输入 “8mm ”,在图形区域选择中心线, 在属性管理器中选中 【添加尺寸】、【选 择链】、【双向】和【顶端加盖】复选框,选中【圆弧】单选按钮,单击【确定】 按钮 ,标注尺寸,完成草图,如图 7所示。 律黑 __________________ 严 玄[B 总 -召 厂[.砲 r 韦歼左眛編◎也 17比自口 R an (A ) 广 Efetfi- 图_7运用“等距实体”绘制草图 (8)单击【拉伸切除】按钮 □,出现【切除-拉伸】属性管理器,在【终止条件】下拉 列表框内选择【完全贯穿】选项,单击【确定】按钮 ,如图8所示。 图5 “拉伸”特征

verilog实验3

实验三 一、实验内容 用Verilog HDL语言编写二分频器电路模板,四分频器电路模块,八分频器电路模块,并编写测试模块仿真。 二、主要程序 1.电路模块: moduletwo_div(clk1, clk2, clk4, clk8, rst); output clk2, clk4, clk8; reg clk2, clk4, clk8; input clk1, rst; always @(posedge clk1 or negedgerst) begin if(!rst) begin clk2 = 0; clk4 = 0; clk8 = 0; end else if(clk1) begin clk2 = ~clk2; if(clk2) begin clk4 = ~clk4; if(clk4) clk8 = ~clk8; end end end endmodule

测试模块: `timescale 1 ns/ 1 ns moduletwo_div_vlg_tst(); // constants // general purpose registers regeachvec; // test vector input registers reg clk1; regrst; wire clk2; wire clk4; wire clk8; two_div i1 ( .clk1(clk1), .clk2(clk2), .clk4(clk4), .clk8(clk8), .rst(rst) ); initial begin #1 rst = 1; clk1 = 0; #1 rst = 0; #1 rst = 1; #500 $stop; end always // optional sensitivity list

Verilog的135个经典设计实例

【例3.1】4位全加器 module adder4(cout,sum,ina,inb,cin); output[3:0] sum; output cout; input[3:0] ina,inb; input cin; assign {cout,sum}=ina+inb+cin; endmodule 【例3.2】4位计数器 module count4(out,reset,clk); output[3:0] out; input reset,clk; reg[3:0] out; always @(posedge clk) begin if (reset) out<=0; //同步复位 else out<=out+1; //计数 end endmodule 【例3.3】4位全加器的仿真程序 `timescale 1ns/1ns `include "adder4.v" module adder_tp; //测试模块的名字 reg[3:0] a,b; //测试输入信号定义为reg型 reg cin; wire[3:0] sum; //测试输出信号定义为wire型 wire cout; integer i,j; adder4 adder(sum,cout,a,b,cin); //调用测试对象 always #5 cin=~cin; //设定cin的取值 initial begin a=0;b=0;cin=0; for(i=1;i<16;i=i+1) #10 a=i; //设定a的取值 end - 1 -

initial begin for(j=1;j<16;j=j+1) #10 b=j; //设定b的取值 end initial//定义结果显示格式 begin $monitor($time,,,"%d + %d + %b={%b,%d}",a,b,cin,cout,sum); #160 $finish; end endmodule 【例3.4】4位计数器的仿真程序 `timescale 1ns/1ns `include "count4.v" module coun4_tp; reg clk,reset; //测试输入信号定义为reg型 wire[3:0] out; //测试输出信号定义为wire型 parameter DELY=100; count4 mycount(out,reset,clk); //调用测试对象 always #(DELY/2) clk = ~clk; //产生时钟波形 initial begin//激励信号定义 clk =0; reset=0; #DELY reset=1; #DELY reset=0; #(DELY*20) $finish; end //定义结果显示格式 initial $monitor($time,,,"clk=%d reset=%d out=%d", clk, reset,out); endmodule 【例3.5】“与-或-非”门电路 module AOI(A,B,C,D,F); //模块名为AOI(端口列表A,B,C,D,F) input A,B,C,D; //模块的输入端口为A,B,C,D output F; //模块的输出端口为F - 2 -

实验指导书

《数控机床》 实 验 指 导 书 (简本) 蚌埠学院机电系李大胜2008年9月修订

实验一数控车床操作模拟(计算机仿真) 一、实验目的和要求 数控加工在制造业中占有非常重要的地位,数控机床是一种高效的自动化设备,它可以按照预先编制好的零件数控加工程序自动地对工件进行加工。宇航数控加工仿真系统可以在计算机屏幕上仿真完成数控加工程序的输入输出、数控机床操作、工件加工、虚拟测量等数控加工全过程,而且在数控加工仿真系统中,机床操作面板和操作步骤与相应的实际数控机床完全相同,学生在这种虚拟工业环境中可以学习掌握典型数控车床的加工操作方法,通过数控加工仿真系统可以使培训得到实物操作训练的目的,本次实验主要要求学生了解宇航仿真软件的使用和熟悉配备主流数控系统的数控车床的操作及对刀方法。 二、实验内容 1、了解数控车床的基本运动、加工对象及其用途; 2、了解数控车床操作面板各按键(CNC界面)的功用; 3、掌握数控车床的调整及加工前的准备工作、尤其要熟练掌握FANUC0i系统的多种对刀方法; 三、实验仪器 软件要求:宇航数控仿真系统30节点 硬件要求:微机30台 四、实验内容及步骤 YHCNC仿真系统及虚拟机床操作(FANUC 0i) 1、机床操作面板 机床操作面板位于窗口的右下侧,如下图所示,主要用于控制机床运行状态,由模式选择按钮、运行控制开关等多个部分组成,每一部分的详细说明如下: FANUC 0i面板 AUTO:自动加工模式。EDIT:编辑模式。MDI:手动数据输入。 INC:增量进给。 HND:手轮模式移动机床。 JOG:手动模式,手动连续移动机床。 REF:回参考点。

华中科技大学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的参数顺序写错,导致接线与题给的不一致,发现问题后及时改

相关文档