当前位置:文档之家› verilog实验课

verilog实验课

verilog实验课
verilog实验课

实验二数码管显示电路

一、实验目的

1,实现十六进制计数显示。

2,实现常见英语字母显示。

二、实验原理

用数码管除了可以显示0~9的阿拉伯数字外, 还可以显示一些英语字母。

数码管由7段显示输出, 利用7个位的组合输出, 就可以形成26个英语字母的对应显示。表一显示常见的字母与7段共阳数码管的显示关系。若为共阴数码管则取反。

表一:常见的字母与七段数码管的显示关系

三、实验内容

l. 编写一个简单的0~F轮换显示的十六进制计数器电路。

2. 编写一个显示上述字母的轮换显示电路。

3. 通过仿真或观察波形验证设计电路的正确性。

4. 锁定引脚并下载验证结果。

四、pin脚与连线

33-->1khz

L1-->地

五、设计提示

1.字母轮换显示电路可以采用状态图的方式设计, 采用静态显示就可以,对于每一个时钟脉冲, 将改变一状态。

2.参考输出:

4'h0: seg = 8'hc0; //显示0

4'h1: seg = 8'hf9; //显示1

六、实验报告要求

l. 叙述电路工作原理。

2. 心得体会。

实验三:键盘扩展实验

一、实验目的:

1,了解试验箱的使用,接线方式;

2,熟悉键盘输入方式。

3,熟悉verilog语言,以及程序下载方法;

二、实验原理

图一实验原理图

电路提供了四位行线(R0-R3)与四位列线(L0-L3),可以通过编程对键进行定义为数字键或功能键。

三、pin脚定义

图二 pin脚定义图

四、实验连线

33-->1khz

z3-->JX1

L1-->地

z5-->RL(EEPROM左上角)

五、实验说明

在试验中为键盘自定义功能,随便点亮数码管,segout对应的是数码管上的控制管脚。

六、实验报告要求

l. 叙述电路工作原理。

2. 心得体会。

实验四硬件电子琴电路实验

一、实验目的

编制一个程序,实现根据键入信号发出不同的音价。

二、实验原理

一个音的音阶由频率决定基本音阶的频率如下表

图一各音阶对应频率

要发出1的音只需产生440Hz周期为1136.4us x 2的频率即可。模块speaker实现此功能speaker是一个带预置的减法计数器用于产生指定周期的脉冲speaker的基准时钟是10M100ns, 当tone为11364时每1136.4us x 2产生一个脉冲模块tone根据用户的键入输出相应的周期数供speaker产生脉冲当用户按下K0时输出tone 11364, 按下K1时输出tone 10124, …

三、pin脚定义

图二 pin脚定义图

按键引脚参考实验二

三、实验连线

34-->8hz

33-->4Mhz

10-->vin(步进电机左侧音频功放区)

键盘连线参考实验二。

实验五多功能数字钟

一、实验任务及要求

l. 能进行正常的时、分、秒计时功能, 分别由6个数码管显示24小时、60分钟、60秒钟的计数器显示。

2. 能利用实验系统上的按键实现“校时”“校分”功能:

⑴ K1为手动调整时,每按一次,计数器加1;如果长按,则连续快速加1,用于快速

调时和定时;(高电平计数)

⑵K2为在手动校时功能时,选择是调整小时,还是分钟;若长时间按住该键,还可使

秒信号清零,用于精确调时;

(3)K3为切换功能,为0:计时功能;为1:闹钟功能;为2:手动校时功能。调整结束

后将K1,K2置为低电平开始运行.

3. 能利用扬声器做整点报时:

⑴当计时到达59’50”时开始报时, 在59’50”、52”、54”、56”、58”鸣叫 ,鸣叫声频可为500Hz;

⑵到达59’60”时为最后一声整点报时, 整点报时是频率可定为lKHz。

4. 用层次化设计方法设计该电路, 用verilog语言编写各个功能模块。

5. 报时功能、闹时功能用功能仿真的方法验证, 可通过观察有关波形确认电路设计是否正确。

6. 完成电路设计后, 用实验系统下载验证。

二、设计说明与提示

系统顶层框图

多功能数字钟框图如图15-1

图15-1 多功能数字钟框图

模块电路功能如下:

l. 秒计数器、分计数器、时计数器组成了最基本的数字钟计时电路, 其计数输出送7段译码电路由数码管显示。

2. 基准频率分频器可分频出标准的 lHz 频率信号, 用于秒计数的时钟信号;分频出4Hz频率信号, 用于校时、校分的快速递增信号;分频出64Hz 频率信号, 用于按动按键的消除抖动。

3. MUX 模块是二选一数据选择器, 用于校时、校分与正常计时的选择。

4. 报时电路模块需要500Hz 通过一个组合电路完成功能, 前五声讯响功能报时电路还需用一个触发器来保证整点报时时间为 l秒。

5. 闹时电路模块也需要500Hz或lKHz音频信号以及来自秒计数器、分计数器和时计数器的输出信号作本电路的输入信号。

6.本实验中数码管使用驱动期间进行控制,所以可以编程重点是时钟的逻辑控制。

三、实验报告要求

l. 画出顶层原理图。

2. 对照数字钟电路框图分析电路工作原理。

3. 写出各功能模块的verilog语言源文件。

4. 叙述各模块的工作原理。

5. 说明按键消抖电路的工作原理,画出有关波形图。

6. 详述闹时电路的工作原理, 绘出详细电路或框图, 并写出verilog语言源文件, 并画出有关波形。

四、实验连线

五、实验箱连线

33-->64hz

10-->1KHZ

83-->L1(指示是否设置了报警)

82-->L2(指示当前正在调整分钟)

81-->L3(指示当前正在调整小时)

79-->SPIIN(报警输出,接扬声器)

34-->k1

35-->k2(脉冲开关)

36-->k3

Z8-->JX3

Z3-->JX4

Z4-->JX5

五、参考信号定义:

clk:标准时钟信号,其频率为4Hz;

clk_1k:产生闹铃音、报时音的时钟信号,其频率为1024Hz;

mode:功能控制信号;为0:计时功能;为1:闹钟功能;为2:手动校时功能;turn:接按键,在手动校时功能时,选择是调整小时,还是分钟;

若长时间按住该键,还可使秒信号清零,用于精确调时;

change:接按键,手动调整时,每按一次,计数器加1;

如果长按,则连续快速加1,用于快速调时和定时;

hour,min,sec:此三信号分别输出并显示时、分、秒信号,

皆采用BCD 码计数,分别驱动6 个数码管显示时间;

例如:begin hour [7:4]<=hour [7:4]+1; hour[3:0]<=0;

可将hour位前位加1显示,后位置0

alert:输出到扬声器的信号,用于产生闹铃音和报时音;

LD_alert:接发光二极管,指示是否设置了闹钟功能;

LD_hour:接发光二极管,指示当前调整的是小时信号;

LD_min:接发光二极管,指示当前调整的是分钟信号。

六、pin脚定义

数电实验报告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 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实验报告(全)

目录 实验一 (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实验报告交通灯

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实验报告

实验报告格式要求 一、实验报告内容包括: (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实现交通灯设计实验报告

电子科技大学 实 验 报 告 一、实验室名称:虚拟仪器实验室 二、实验项目名称:交通灯设计实验 三、实验学时: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 实验指导书

实验一简单组合逻辑电路的设计 一实验要求 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-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实验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语言实验报告

计算机科学与技术学院

目录 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实验60进制计数器

module counter60(clk_in,clkout,rst,out); input clk_in,rst; output [6:0] out; output clkout; reg [6:0] out1; reg [6:0] out2; reg [3:0] cnth; reg [3:0] cntl; reg [7:0] cnt; always @(posedge clk_in) begin if(!rst) cnt<=8'd0; else cnt<=cnt+8'd1; end assign clkout=cnt[4]; always @(posedge clkout or negedge rst) begin if(!rst) {cnth,cntl}<=8'd0; else if(cnth==5&&cntl==9) {cnth,cntl}<=8'd0; else if(cntl==4'd9) begin cntl<=4'd0; cnth<=cnth+4'd1; end else cntl<=cntl+4'd1; end always @(cnth) begin case(cnth) 4'd0:out1=7'b011_1111;//0 4'd1:out1=7'b000_0110;//1 4'd2:out1=7'b101_1011;//2 4'd3:out1=7'b100_1111;//3 4'd4:out1=7'b110_0110;//4 4'd5:out1=7'b110_1101;//5 default:out1=7'b011_1111;//0 endcase end

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、编写分频程序。

EDA实验指导书全(Verilog版)

EDA实验指导书 熊利祥编 武汉理工大学华夏学院

2011年9月

前言 一、实验课目的 EDA实验课是电子工程类专业教学中重要的实践环节,包括了ISE开发环境基本操作及Verilog语言、组合逻辑电路设计、流水灯设计、计数器设计、扫描显示电路的驱动、综合层次性实验——交通灯或数字秒表设计实验。要求学生通过实验学会正确使用EDA技术,掌握FPGA器件的开发,熟练使用ISE开发环境,掌握Verilog 语言的编程,掌握数字电路和系统的设计。 通过实验,使学生加深对课堂专业教学内容的理解,培养学生理论联系实际的能力,实事求是,严谨的科学作风,使学生通过实验结果,利用所学的理论去分析研究EDA技术。培养学生使用EDA实验设备的能力以及运用实验方法解决实际问题的能力。 二、实验要求: 1.课前预习 ①认真阅读实验指导书,了解实验内容; ②认真阅读有关实验的理论知识; ③读懂程序代码。 2.实验过程 ①按时到达实验室; ②认真听取老师对实验内容及实验要求的讲解; ③认真进行实验的每一步,观察程序代码与仿真结果是否相符; ④将实验过程中程序代码和仿真结果提交给老师审查; ⑤做完实验后,整理实验设备,关闭实验开发板电源、电脑电源后方可离开。 3.实验报告 ①按要求认真填写实验报告书; ②认真分析实验结果; ③按时将实验报告交给老师批阅。

三、实验学生守则 1.保持室内整洁,不准随地吐痰、不准乱丢杂物、不准大声喧哗、不准吸烟、不准吃东西; 2.爱护公务,不得在实验桌及墙壁上书写刻画,不得擅自删除电脑里面的文件; 3.安全用电,严禁触及任何带电体的裸露部分,严禁带电接线和拆线; 4.任何规章或不按老师要求操作造成仪器设备损坏须论价赔偿。

西安邮电大学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);

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