当前位置:文档之家› FPGA开发语言——verilog语言详细教程:6-9

FPGA开发语言——verilog语言详细教程:6-9

第六章Verilog的数据类型及逻辑系统

学习内容:

?学习Verilog逻辑值系统

?学习Verilog中不同类的数据类型

?理解每种数据类型的用途及用法

?数据类型说明的语法

Verilog采用的四值逻辑系统

’0’, Low, False, Logic Low, Ground,VSS,

Negative Assertion

‘1’, High, True, Logic High, Power,

VDD, VCC, Positive Assertion

’X’ Unknown: Occurs at Logical Which Cannot

be Resolved Conflict

HiZ, High Impedance, Tri-Stated,

Disabled Driver (Unknown)

主要数据类型

Verilog主要有三类(class)数据类型:

?net (线网): 表示器件之间的物理连接

?register (寄存器):表示抽象存储元件?parameters(参数) : 运行时的常数(run-time constants)

net(线网)

net需要被持续的驱动,驱动它的可以是门和模块。

当net驱动器的值发生变化时,Verilog自动的将新值传送到net上。在例子中,线网out由or门驱动。当or门的输入信号置位时将传输到线网net上。

?有多种net 类型用于设计(design-specific)建模和工艺(technology-specific)建模

?没有声明的net 的缺省类型为1 位(标量)wire 类型。但这个缺省类型可由下面的编译指导改变:

`default_nettype

net 类型

功能

wire, tri

supply1, supply0wor, trior wand, triand trireg tri1, tri0

标准内部连接线(缺省)电源和地

多驱动源线或多驱动源线与能保存电荷的net 无驱动时上拉/下拉

综合编译器不支持的net 类型

?wire类型是最常用的类型,只有连接功能。

?wire和tri类型有相同的功能。用户可根据需要将线网定义为wire或tri以提高可读性。例如,可以用tri类型表示一个net有多个驱动源。或者将一个net声明为tri以指示这个net可以是高阻态Z(hign-impedance)。可推广至wand和triand、wor和trior

?wand、wor有线逻辑功能;与wire的区别见下页的表。

?trireg类型很象wire类型,但trireg类型在没有驱动时保持以前的值。这个值的强度随时间减弱。

?修改net缺省类型的编译指导:

`default_nettype

nettype不能是supply1和supply0。

net类在发生逻辑冲突时的决断

?Verilog有预定义的决断函数

?支持与工艺无关的逻辑冲突决断–wire-and用于集电极开路电路

–wire-or用于射极耦合电路

寄存器类(register)

?寄存器类型在赋新值以前保持原值

?寄存器类型大量应用于行为模型描述及激励描述。在下面的例子中,reg_a、reg_b、reg_sel用于施加激励给2:1多路器。

?用行为描述结构给寄存器类型赋值。给reg类型赋值是在过程块中。

寄存器类的类型

?寄存器类有四种数据类型

寄存器类型功能

reg 可定义的无符号整数变量,可以是标量(1位)或矢量,是最常用的寄存器类型

integer 32位有符号整数变量,算术操作产生二进制补码形式的结果。通常用作不会由硬件实现的的数据处理。

real 双精度的带符号浮点变量,用法与integer相同。

time 64位无符号整数变量,用于仿真时间的保存与处理realtime 与real内容一致,但可以用作实数仿真时间的保存与

处理

?不要混淆寄存器数据类型与结构级存储元件,如udp_dff

?net声明

[range] [delay] [, net_name];

net_type:net类型

range: 矢量范围,以[MSB:LSB]格式

delay:定义与net相关的延时

net_name: net名称,一次可定义多个net, 用逗号分开。?寄存器声明

[range] [, reg_name];

reg_type:寄存器类型

range:矢量范围,以[MSB:LSB]格式。只对reg类型有效reg_name :寄存器名称,一次可定义多个寄存器,用逗号分开

?举例:

reg a; //一个标量寄存器

wand w; // 一个标量wand类型net

reg [3: 0] v; // 从MSB到LSB的4位寄存器向量

reg [7: 0] m, n; // 两个8位寄存器

tri [15: 0] busa; // 16位三态总线

wire [0: 31] w1, w2; // 两个32位wire,MSB为bit0

选择正确的数据类型

module top;

wire y;

reg a, b;

DUT u1 (y, a, b) ;

initial begin

a = 0;

b = 0;

#5 a = 1;

end endmodule module DUT (Y, A, B); output Y;

input A, B;

wire Y, A, B;

and (Y, A, B) ; endmodule

输入端口可以由

net/register驱动,但输入端口只能是net

输出端口可以是

net/register类型,输出

端口只能驱动net

在过程块中只能给

register类型赋值

若Y,A,B说明为

reg则会产生错误。

in1

in2

O

A

B

Y

双向端口输入/输出只能是net类型

选择数据类型时常犯的错误

?用过程语句给一个net 类型的或忘记声明类型的信号赋值。信息:illegal …… assignment.

?

将实例的输出连接到声明为register 类型的信号上。信息: has illegal output port specification.?

将模块的输入信号声明为register 类型。

信息:incompatible declaration, ……

下面所列是常出的错误及相应的错误信息(error message)

?信号可以分为端口信号和内部信号。出现在端口列表中的信号是端口信号,其它的信号为内部信号。

?对于端口信号,输入端口只能是net 类型。输出端口可以是net 类型,也可以是register 类型。若输出端口在过程块中赋值则为register 类型;若在过程块外赋值(包括实例化语句),则为net 类型。

?

内部信号类型与输出端口相同,可以是net 或register 类型。判断方法也与输出端口相同。若在过程块中赋值,则为register 类型;若在过程块外赋值,则为net 类型。

?

若信号既需要在过程块中赋值,又需要在过程块外赋值。这种情况是有可能出现的,如决断信号。这时需要一个中间信号转换。

信号类型确定方法总结如下:

修改前:

module example(o1, o2, a, b, c, d);

input a, b, c, d;

output o1, o2;

reg c, d;

reg o2

and u1(o2, c, d);

always @(a or b)

if (a) o1 = b; else o1 = 0; endmodule 修改后:

module example(o1, o2, a, b, c, d);

input a, b, c, d;

output o1, o2;

// reg c, d;

// reg o2

reg o1;

and u1(o2, c, d);

always @(a or b)

if (a) o1 = b; else o1 = 0; endmodule

example.v

Compiling source file "example.v"Error! Illegal left-hand-side assignment [Verilog-ILHSA]

"example.v", 11: o1 = b;

Error! Illegal left-hand-side assignment [Verilog-ILHSA]

"example.v", 12: o1 = 0;2 errors

第一次编译信息verilog –c example.v

第二次编译信息Compiling source file "example.v"Error! Incompatible declaration, (c) defined as input at line 2 [Verilog-IDDIL] "example.v", 5:

Error! Incompatible declaration, (d) defined as input

at line 2 [Verilog-IDDIL] "example.v", 5:

Error! Gate (u1) has illegal output specification [Verilog-GHIOS]

"example.v", 8: 3 errors

参数(parameters)

?用参数声明一个可变常量,常用于定义延时及宽度变量。?参数定义的语法:parameter ;

?可一次定义多个参数,用逗号隔开。

?在使用文字(literal)的地方都可以使用参数。

?参数的定义是局部的,只在当前模块中有效。

?参数定义可使用以前定义的整数和实数参数。

module mod1( out, in1, in2);

. . .

parameter cycle = 20, prop_ del = 3,

setup = cycle/2 -prop_del,

p1 = 8,

x_ word = 16’bx,

file = "/ usr1/ jdough/ design/ mem_ file. dat";

. . .

wire [p1: 0] w1; // A wire declaration using parameter . . .

endmodule 注意:参数file不是string,而是一个整数,其值是所有字母的扩展ASCII值。若file=―AB‖,则file值为

8?h4142。用法:

$fopen(file);

$display(―%s‖, file);

?可用defparam 语句在编译时重载参数值。?defparam 语句引用参数的层次化名称

?使用defparam 语句可单独重载任何参数值。

Defparam 语句(现在综合工具还不支持)

module mod1( out, in1, in2);. . .

parameter p1 = 8,

real_constant = 2.039,x_word = 16’bx,file =

"/usr1/jdough/design/mem_file.dat";. . .

endmodule

module test;. . .

mod1 I1( out, in1, in2);defparam I1. p1 = 6,

I1. file = "../ my_mem.dat";. . .

endmodule

module mod1( out, in1, in2);. . .parameter p1 = 8,real_constant = 2.039,x_word = 16’bx,

file = "/usr1/jdough/design/mem_file.dat";. . .

endmodule module top;

. . .

mod1 #( 5, 3.0, 16’bx, "../ my_mem. dat") I1( out, in1, in2);. . .

endmodule 模块实例化时参数重载

使用#

次序与原说明相同不需要给所有参数赋新值,但不能跳跃赋值,假设模块MOD 顺序定义三个参数a, b, c ,则:MOD u1 #( a, b) (...); MOD u2 #(a) (...);MOD u3 #(a, ,c) (...); MOD u4 #(, b, c) (...); 为什么编译器认为这是参数而不

是延时呢?

因为#说明延时的时候只能用于gate 或过程语句,不能用于

模块实例。

gate (primitives)在实例化时只能有延时,不能有模块参数。

寄存器数组(Register Arrays)

?在Verilog中可以说明一个寄存器数组。

integer NUMS [7: 0]; // 包含8个整数数组变量time t_vals [3: 0]; // 4个时间数组变量

?reg类型的数组通常用于描述存储器

其语法为:reg [MSB:LSB]

[first_addr:last_addr];

[MSB:LSB]定义存储器字的位数

[first_addr:last_addr]定义存储器的深度例如:

reg [15: 0] MEM [0:1023]; // 1K x 16存储器

reg [7: 0] PREP [‘hFFFE: ’hFFFF]; // 2 x 8存储器?描述存储器时可以使用参数或任何合法表达式parameter wordsize = 16;

parameter memsize = 1024;

reg [wordsize-1: 0] MEM3 [memsize-1: 0];

存储器寻址(Memory addressing)

?存储器元素可以通过存储器索引(index)寻址,也就是给出元素在存储器的位置来寻址。

mem_name [addr_expr]

?Verilog 不支持多维数组。也就是说只能对存储器字进行寻址,而不能对存储器中一个字的位寻址。

module mems;

reg [8: 1] mema [0: 255]; // declare memory called mema reg [8: 1] mem_word; // temp register called mem_ word . . .

initial

begin

$displayb( mema[5]); //显示存储器中第6个字的内容mem_word = mema[5];

$displayb( mem_word[8]); // //显示第6个字的最高有效位end

endmodule

若要对存储器字的某些位存取,

只能通过暂存器传递

基于FPGA的Verilog HDL数字钟设计 -

基于FPGA的Verilog HDL数字钟设计 专业班级姓名学号 一、实验目的 1.掌握可编程逻辑器件的应用开发技术——设计输入、编译、仿真和器件编程; 2.熟悉一种EDA软件使用; 3.掌握Verilog设计方法; 4.掌握分模块分层次的设计方法; 5.用Verilog完成一个多功能数字钟设计; 6.学会FPGA的仿真。 二、实验要求 ?功能要求: 利用实验板设计实现一个能显示时分秒的多功能电子钟,基本功能: 1)准确计时,以数字形式显示时、分、秒,可通过按键选择当前显示时间范围模式; 2)计时时间范围00:00:00-23:59:59 3)可实现校正时间功能; 4)可通过实现时钟复位功能:00:00:00 扩展功能: 5)定时报:时间自定(不要求改变),闹1分钟(1kHz)---利用板上LED或外接电路实现。 6)仿广播电台正点报时:XX:59:[51,53,55,57(500Hz);59(1kHz)] ---用板上LED或外接 7)报整点时数:XX:00:[00.5-XX.5](1kHz),自动、手动---用板上LED或外接 8)手动输入校时; 9)手动输入定时闹钟; 10)万年历; 11)其他扩展功能; ?设计步骤与要求: 1)计算并说明采用Basys2实验板时钟50MHz实现系统功能的基本原理。 2)在Xilinx ISE13.1 软件中,利用层次化方法,设计实现模一百计数及显示的电路系 统,设计模块间的连接调用关系,编写并输入所设计的源程序文件。 3)对源程序进行编译及仿真分析(注意合理设置,以便能够在验证逻辑的基础上尽快 得出仿真结果)。 4)输入管脚约束文件,对设计项目进行编译与逻辑综合,生成下载所需.bit文件。 5)在Basys2实验板上下载所生成的.bit文件,观察验证所设计的电路功能。

华为verilog培训教程

共41页 资源类别: HDL 语言 内部公开 1.0 密级 版本文档编号 文档中心 Verilog HDL 入门教程 (仅供内部使用) yyyy/mm/dd 日期: 批准: 日期:中研基础 批准:2004.8.3 日期:中研基础拟制:版权所有 不得复制

修订记录 初稿完成 1.00 2004.8.3作者 描述 修订版本 日期 绝密请输入文档编号 Verilog HDL 入门教程 2004-08-16第2页,共41页 版权所有,侵权必究

目 录 28 5 结构建模..............................................................274.8 case 语句..........................................................254.7 条件语句..........................................................254.6.6 连接运算符....................................................254.6.5 条件运算符....................................................244.6.4 按位逻辑运算符................................................234.6.3 逻辑运算符....................................................224.6.2 关系运算符....................................................214.6.1 算术运算符. (21) 4.6 运算符和表达式.....................................................204.5.2 寄存器类型 ...................................................204.5.1 线网类型 (20) 4.5 数据类型..........................................................184.4.2 常量.........................................................184.4.1 值集合. (18) 4.4 数字值集合........................................................184.3 格式.............................................................174.2 注释.............................................................174.1.3 书写规范建议..................................................174.1.2 关键词.......................................................174.1.1 定义 (17) 4.1 标识符 (17) 4 Verilog HDL 基本语法 (16) 3.3.4 混合设计描述..................................................153.3.3 行为描述方式..................................................143.3.2 数据流描述方式................................................123.3.1 结构化描述方式 (12) 3.3 三种建模方式......................................................113.2 时延.............................................................113.1.3 模块语法......................................................103.1.2 模块的结构....................................................93.1.1 简单事例. (9) 3.1 模块 (9) 3 Verilog HDL 建模概述 (7) 2.4.2 能力..........................................................72.4.1 历史. (7) 2.4 Verilog HDL 简介.....................................................62.3 设计方法学.........................................................62.2 硬件描述语言.......................................................52.1 数字电路设计方法. (5) 2 HDL 设计方法学简介......................................................51 前言...................................................................绝密 请输入文档编号 Verilog HDL 入门教程 2004-08-16 第3页,共41页 版权所有,侵权必究

数字系统设计与verilog HDL课程设计

数字系统设计与verilog HDL课程设计 设计题目:实用多功能数字钟 专业:电子信息科学与技术 班级:0313410 学号:031341025 姓名:杨存智 指导老师:黄双林

摘要 本课程设计利用QuartusII软件Verilog VHDL语言的基本运用设计一个多功能数字钟,经分析采用模块化设计方法,分别是顶层模块、alarm、alarm_time、counter_time、clk50mto1、led、switch、bitel、adder、sound_ddd、sound_ddd_du模块,再进行试验设计和软件仿真调试,分别实现时分秒计时、闹钟闹铃、时分秒手动校时、时分秒清零,时间保持和整点报时等多种基本功能。 单个模块调试达到预期目标,再将整体模块进行试验设计和软件仿真调试,已完全达到分块模式设计功能,并达到设计目标要求。 关键字:多功能数字钟、Verilog、模块、调试、仿真、功能

目录 1.课程设计的目的及任务............................................................. 错误!未定义书签。 1.1 课程设计的目的 (3) 1.2 课程设计的任务与要求 (4) 2.课程设计思路及其原理 (4) 3.QuartusII软件的应用 (5) 3.1工程建立及存盘 (5) 3.2工程项目的编译 (5) 3.3时序仿真 (6) 4.分模块设计、调试、仿真与结果分析 (7) 4.1 clk50mto1时钟分频模块 (7) 4.2 adder加法器模块 (7) 4.3 hexcounter16 进制计数器模块 (7) 4.4 counter_time 计时模块 (8) 4.5 alarm闹铃模块 (8) 4.6 sound_ddd嘀嘀嘀闹铃声模块 (9) 4.7 sound_ddd_du嘀嘀嘀—嘟声音模块 (9) 4.8 alarm_time闹钟时间设定模块 (10) 4.9 bitsel将输出解码成时分秒选择模块 (10) 4.10 switch去抖模块 (11) 4.11 led译码显示模块 (11) 4.12 clock顶层模块 (12) 5.实验总结 (13) 5.1调试中遇到的问题及解决的方法 (13) 5.2实验中积累的经验 (14) 5.3心得体会 (14) 6.参考文献 (14) 1.1 课程设计的目的 通过课程设计的锻炼,要求学生掌握V erilog HDL语言的一般设计方法,掌握VerilogHDL语言的基本运用,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,基于实践、源于实践,实践出真知,实践检验真理,培养学生的

verilog课程设计—交通灯

课程论文 论文题目基于DE2的交通灯设计完成时间 课程名称Verilog语言设计 任课老师 专业 年级

1.交通信号控制器设计要求与思路 1.1设计背景 FPGA是一种用户根据各自需要而自行构造逻辑功能的数字集成电路,其种类很多,内部结构也不同,但共同的特点是体积小、使用方便。本文介绍了用VerilogHDL语言设计交通灯控制器的方法,并在QuartusII系统对FPGA芯片进行编译下载,由于生成的是集成化的数字电路,没有传统设计中的接线问题,所以故障率低、可靠性高,而且体积非常小。本文通过EDA设计,利用VerilogHDL语言模拟仿真交通灯控制电路。 1.2设计要求 根据交通灯控制器要实现的功能,考虑用两个并行执行的always语句来分别控制A方向和B方向的3盏灯。这两个always语句使用同一个时钟信号,以进行同步,也就是说,两个进程的敏感信号是同一个。每个always语句控制一个方向的3种灯按如下顺序点亮,并往复循环:绿灯----黄灯----红灯,每种灯亮的时间采用一个减法计数器进行计数,计数器用同步预置数法设计,这样只需改变预置数据,就能改变计数器的模,因此每个方向只要一个计数器进行预置数就可以。为便于显示灯亮的时间,计数器的输出均采用BCD码,显示由4个数码管来完成,A方向和B方向各用两个数码管。设定A方向红灯、黄灯、绿灯亮的时间分别为:35s、5s、35s,B方向的红灯、黄灯、绿灯亮的时间分别为:35s、5s、35s。假如要改变这些时间,只需要改变计数器的预置数即可。 1.3设计思路 两个方向各种灯亮的时间能够进行设置和修改,此外,假设B方向是主干道,车流量大,因此B方向通行的时间应该比A方向长。交通灯控制器的状态转换表见下表。表中,1表示灯亮,0表示灯不亮。A方向和B方向的红黄绿分别用R1、Y1、G1、R2、Y2、G2来表示。

(完整版)Verilog实现的基于FPGA的五层楼电梯运行控制逻辑毕业设计论文

五层楼电梯运行控制逻辑设计 摘要:电梯是高层建筑不可缺少的运输工具,用于垂直运送乘客和货物,传统的电梯控制系统主要采用继电器,接触器进行控制,其缺点是触点多,故障率高、可靠性差、维修工作量大等,本设计根据电梯自动控制的要求利用Verilog语言编写并完成系统设计,在利用软件仿真之后,下载到了FPGA上进行硬件仿真。FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了之前的可编程器件门电路数有限及速度上的缺点。 关键词:电梯控制FPGA Verilog软件设计硬件设计 在当今社会,随着城市建设的不断发展,高层建筑的不断增多,电梯作为高层建筑中垂直运行的交通工具已与人们的日常生活密不可分。目前电梯控制系统主要有三种控制方式:继电路控制系统(早期安装的电梯多位继电器控制系统),FPGACPLD [1] 的控制系统、微机控制系统。继电器控制系统由于故障率高、可靠性差、控制方式不灵活以及消耗功率大等缺点,目前已逐渐被淘汰,而微机控制系统虽在智能控制方面有较强的功能,但也存在抗扰性差,系统设计复杂,一般维修人员难以掌握其维修技术等缺陷。而FPGACPLD控制系统由于运行可靠性高,使用维修方便,抗干扰性强,设计和调试周期较短等优点 [2] ,倍受人们重视等优点,已经成为目前在电梯控制系统中使用最多的控制方式,目前也广泛用于传

统继电器控制系统的技术改造。 随着现代化城市的高度发展,每天都有大量人流及物流需要输送,因此在实际工程应用中电梯的性能指标相当重要,主要体现在:可靠性,安全性,便捷快速性。电梯的可靠性非常重要,直接或间接的影响着人们的生产,生活,而电梯的故障主要表现在电力拖动控制系统中,因此要提高可靠性也要从电力拖动控制系统入手。 本次设计尝试用Verilog实现电梯控制器部分,进行了多层次的电梯控制,也进行了软件及硬件上的仿真验证,时序分析以保证设计的正确。在设计中先用软件进行模拟仿真,然后又下载到FPGA开发板上进行硬件仿真,以确保设计的正确性。 1电梯的设计分析 1.1 系统的需求分析及系统描述 设计一个电梯运行控器,该电梯有5层楼,设计的电梯调度算法满足提高服务质量、降低运行成本的原则;电梯的内部有一个控制面板,它负责按下请求到的楼层,并且显示当前尚未完成的目的地请求,当到达该楼层以后自动撤销本楼层的请求,即将面板灯熄灭;除1层和5层分别只有上和下按钮外,其余每个楼层(电梯门口旁)的召唤面板都有两个按钮,分别指示上楼和下楼请求。当按下后,对应按钮灯亮。如果电梯已经到达该楼层,按钮灯熄灭;电梯的外部面板会显示电梯当前所在的楼层,及上行还是下行(暂停显示刚才运行时的状态);电梯向一个方向运行时,只对本方向前方的请求进行应答,直到本方向前方无请求时,才对反方向的请求进行应答。当前内部控制面板上有的请求,只要经过所在楼层均会立即响应.

Verilog HDL数字时钟课程设计

课程设计报告 课程设计名称:EDA课程设计课程名称:数字时钟 二级学院:信息工程学院 专业:通信工程 班级:12通信1班 学号:1200304126 姓名:@#$% 成绩: 指导老师:方振汉 年月日

目录 第一部分 EDA技术的仿真 (3) 1奇偶校验器 (3) 1.1奇偶校验器的基本要求 (3) 1.2奇偶校验器的原理 (3) 1.3奇偶校验器的源代码及其仿真波形 (3) 28选1数据选择器 (4) 2.18选1数据选择器的基本要求 (4) 2.28选1数据选择器的原理 (4) 2.38选1数据选择器的源代码及其仿真波形 (5) 34位数值比较器 (6) 3.14位数值比较器的基本要求 (6) 3.24位数值比较器的原理 (6) 3.34位数值比较器的源代码及其仿真波形 (7) 第二部分 EDA技术的综合设计与仿真(数字时钟) (8) 1概述 (8) 2数字时钟的基本要求 (9) 3数字时钟的设计思路 (9) 3.1数字时钟的理论原理 (9) 3.2数字时钟的原理框图 (10) 4模块各功能的设计 (10) 4.1分频模块 (10) 4.2计数模块(分秒/小时) (11) 4.3数码管及显示模块 (13) 5系统仿真设计及波形图........................... 错误!未定义书签。5 5.1芯片引脚图.................................... 错误!未定义书签。5 5.2数字时钟仿真及验证结果 (16) 5.3数字时钟完整主程序 (17) 6课程设计小结 (23) 7心得与体会 (23) 参考文献 (24)

基于FPGA的verilog的电子密码锁设计

一、概述 1.1 电子密码锁的现状 随着我国对外开放的不断深入,高档建筑发展很快,高档密码锁具市场的前景乐观。我国密码锁具行业对密码锁具高新技术的投入正逐年增大,高档密码锁的市场需求也逐年增加。在安防工程中,锁具产品是关系到整个系统安全性的重要设备,所以锁具产品的优劣也关系了整个安防工程的质量和验收。 目前,市场上比较先进的智能电子密码锁分别有:IC卡电子密码锁、射频卡式电子密码锁、红外遥控电子密码锁、指纹识别电子密码锁和瞳孔识别电子密码锁等。IC卡电子密码锁成本低,体积小,卡片本身无须电源等优点占领了一定的市场份额,但是由于有机械接触,会产生接触磨损,而且使用不太方便,在一定程度上限制了它的应用;射频卡式电子密码锁是非接触式电子密码锁,成本也不太高,体积跟IC卡密码锁相当,卡片使用感应电源,重量很轻,技术成熟,受到了广泛的欢迎,但是与IC卡电子密码锁相比,成本偏高;指纹识别电子密码锁和瞳孔识别电子密码锁可靠性很高,安全性是目前应用系统中最高的,但是成本高昂,还没进入大众化使用阶段。 在国外,美国、日本、德国的电子密码锁保密性较好,并结合感应卡技术,生物识别技术,使电子密码锁系统得到了飞跃式的发展。这几个国家的密码锁识别的密码更复杂,并且综合性比较好,已经进入了成熟期,出现了感应卡式密码锁,指纹式密码锁,虹膜密码锁,面部识别密码锁,序列混乱的键盘密码锁等各种技术的系统,它们在安全性,方便性,易管理性等方面都各有特长,新型的电子密码锁系统的应用也越来越广。 基于FPGA的电子密码锁是新型现代化安全管理系统,它集微机自动识别技术和现代安全管理措施为一体,它涉及电子,机械,计算机技术,通讯技术,生物技术等诸多新技术。它是解决重要部门出入口实现安全防范管理的有效措施,适用各种场合,如银行、宾馆、机房、军械库、机要室、办公间、智能化小区、工厂、家庭等。 在数字技术网络技术飞速发展的今天,电子密码锁技术得到了迅猛的发展。它早已超越了单纯的门道及钥匙管理,逐渐发展成为一套完整的出入管理系统。它在工作环境安全、人事考勤管理等行政管理工作中发挥着巨大的作用。在该系统的基础上增加相应的辅助设备可以进行电梯控制、车辆进出控制,物业消防监控、餐饮收费、私家车库管理等,真正实现区域内一卡智能管理。

Verilog课程设计

一.实验目的 (1)学习RISC_CPU的基本结构和原理; (2)了解Verilog HDL仿真和综合工具的潜力; (3)展示Verilog设计方法对软/硬件联合设计和验证的意义; (4)学习并掌握一些常用的Verilog语法和验证方法。 二.实验原理 CPU即中央处理单元的英文缩写,它是计算机的核心部件。计算机进行信息处理可分为两个步骤: (1)将数据和程序(即指令序列)输入计算机的存储器中。 (2)从第一条指令的地址起开始执行该程序,得到所需结果,结束运行。CPU的作用是协调并控制计算机的各个部件并执行程序的指令序列,使其有条不紊地进行。因此它必须具有以下基本功能。 ①取指令——当程序忆在存储器中时,首先根据程序入口地址取出一条程序,为此要发出指令地址及控制信号。 ②分析指令——即指令译码,这是对当前取得的指令进行分析,指出它要求什么操作,并产生相应的操作控制命令。 ③执行指令——根据分析指令时产生的“操作命令”形成相应的操作控制信号序列,通过运算器、存储器及输入/输出设备的执行,实现每条指令的功能,其中包括对运算结果的处理以及下条指令地址的形成。 将CPU的功能进一步细化,可概括如下: (1)能对指令进行译码并执行规定的动作; (2)可以进行算术和逻辑运算; (3)能与存储器和外设交换数据; (4)提供整个系统所需要的控制。 尽管各种CPU的性能指标和结构细节各不相同,但它们所能完成的基本功能相同。由功能分析,可知任何一种CPU内部结构至少应包含下面这些部件:(1)算术逻辑运算部件(ALU); (2)累加器; (3)程序计数器;

(4)指令寄存器和译码器; (5)时序和控制部件。 三.实验内容 通过我们自己动手,设计出一个CPU的软核和固核。这个CPU是一个简化的专门为教学目的而设计的RISC_CPU。在设计中我们不但关心CPU总体设计的合理性,而且还使得构成这个RISC_CPU的每一个模块不仅是可仿真的也都可以综合成门级网表。因而从物理意义上说,这也是一个能真正通过具体电路结构而实现的CPU。为了能在这个虚拟的CPU上运行较为复杂的程序并进行仿真,把寻址空间规定为8K(即13们地址线)字节。 四.实验代码 1.源代码 //----------------------------------clk_gen.v------------------------------ `timescale 1ns/1ns //时间单位1ns,时间单位1ns module clk_gen(clk,reset,fetch,alu_ena); //模块名clk_gen,参数列表(clk,reset,fetch,alu_ena)input clk,reset; //输入clk,reset output fetch,alu_ena; //输出fetch,alu_ena wire clk,reset; //wire型变量clk,reset reg fetch,alu_ena; //reg寄存器型变量fetch,alu_ena reg[7:0]state; //reg寄存器型变量8位的state parameter S1=8'b00000001,S2=8'b00000010,S3=8'b00000100,S4=8'b00001000,S5=8'b00010000,S6=8'b001 00000,S7=8'b01000000,S8=8'b10000000,idle=8'b00000000; //参数型定义8位二进制常量s1,s2,s3,s4,s5,s6,s7,s8,idle always@(posedge clk) //always块时钟触发 if(reset) //如果reset为真 begin //执行begin,and顺序块 fetch<=0; //fetch非阻塞赋值赋为0 alu_ena<=0; //alu_ena非阻塞赋值赋为0 state<=idle; //idle非阻塞赋值给state end else //reset为假执行下面begin语句 begin case(state) //case表达式(state) S1:begin alu_ena<=1; //alu_ena非阻塞赋值赋为1 state<=S2; //state非阻塞赋值赋为S2 end S2:begin alu_ena<=0; //alu_ena非阻塞赋值赋为0 state<=S3; //state非阻塞赋值赋为S3 end

基于FPGA的VerilogHDL数字钟设计

基于FPGA的Verilog-HDL数字钟设计--

————————————————————————————————作者:————————————————————————————————日期:

基于FPGA的Verilog HDL数字钟设计 专业班级姓名学号 一、实验目的 1.掌握可编程逻辑器件的应用开发技术——设计输入、编译、仿真和器件编程; 2.熟悉一种EDA软件使用; 3.掌握Verilog设计方法; 4.掌握分模块分层次的设计方法; 5.用Verilog完成一个多功能数字钟设计; 6.学会FPGA的仿真。 二、实验要求 功能要求: 利用实验板设计实现一个能显示时分秒的多功能电子钟,基本功能: 1)准确计时,以数字形式显示时、分、秒,可通过按键选择当前显示时间范围模式; 2)计时时间范围00:00:00-23:59:59 3)可实现校正时间功能; 4)可通过实现时钟复位功能:00:00:00 扩展功能: 5)定时报:时间自定(不要求改变),闹1分钟(1kHz)---利用板上LED或外接电路实现。 6)仿广播电台正点报时:XX:59:[51,53,55,57(500Hz);59(1kHz)] ---用板上LED或外接 7)报整点时数:XX:00:[00.5-XX.5](1kHz),自动、手动---用板上LED或外接

8)手动输入校时; 9)手动输入定时闹钟; 10)万年历; 11)其他扩展功能; 设计步骤与要求: 1)计算并说明采用Basys2实验板时钟50MHz实现系统功能的基本原理。 2)在Xilinx ISE13.1 软件中,利用层次化方法,设计实现模一百计数及显示的电路系 统,设计模块间的连接调用关系,编写并输入所设计的源程序文件。 3)对源程序进行编译及仿真分析(注意合理设置,以便能够在验证逻辑的基础上尽快 得出仿真结果)。 4)输入管脚约束文件,对设计项目进行编译与逻辑综合,生成下载所需.bit文件。 5)在Basys2实验板上下载所生成的.bit文件,观察验证所设计的电路功能。 三、实验设计 功能说明:实现时钟,时间校时,闹铃定时,秒表计时等功能 1.时钟功能:完成分钟/小时的正确计数并显示;秒的显示用LED灯的闪烁做指示; 时钟利用4位数码管显示时分; 2.闹钟定时:实现定时提醒及定时报时,利用LED灯代替扬声器发出报时声音; 3.时钟校时:当认为时钟不准确时,可以分别对分钟和小时位的值进行调整; 4.秒表功能:利用4个数码管完成秒表显示:可以实现清零、暂停并记录时间等功能。 秒表利用4位数码管计数; 方案说明:本次设计由时钟模块和译码模块组成。时钟模块中50MHz的系统时钟clk分频产

Verilog HDL 综合实用教程

《Verilog HDL 综合实用教程》读书笔记——锁存器、触发器
加入收藏
2007-08-29 00:23
?
转发分享 人人网 开心网 新浪微博 搜狐博客 百度收藏 谷歌收藏 qq 书签 豆瓣 淘江湖 Facebook Twitter Digg Yahoo!Bookmarks
锁存器:
推导出锁存器的一般规则是,如果变量未在 always 语句所有可能的执行过程中被赋值, 就推导出锁存器。如果变量在 if 的所有分支中都被赋值则综合成组合逻辑。 case、casez、casex 可转成 if、else 形式。当 case 中不是所有情况都列举出或使用 default 语句时、在 case 语句前对 case 中赋值对象赋初值也可避免综合出锁存器。若不 是以上各种情况且须综合成组合逻辑可以使用综合命令,如下: 例: always @ (Toggle) case (Toggle) //synthesis full_case 2'b01: NextToggle = 2'b10; 2'b10: NextToggle = 2'b01; end case end module 上例中的//synthesis full_case 是综合命令,告知综合工具 case 中已是全部列举可能的 情况,这样综合后无锁存器。(正常的 case 语句是有优先级的,先出现的优先级最高,若 case 中各分支是互斥时,综合成译码逻辑。当使用 casex 时用综合命令//synthesis parallel-case 告知综合工具该 casex 是互斥的)。 触发器: 沿控制的用触发器,且沿控制的赋值用非阻塞的方式“Zee<=A;”。 当 always 中是沿敏感时,此 always 中有 if……else if……且在这些 if……else if 中有多 于 1 个对同一变量赋值时,这个变量很可能被综合成有异步置位或清零的触发器。 例: always @ (negedge Reset or negedge Set or negedge CLKA) if (!Reset) NextState<=12; else if (!Set) NextState<=5;

基于Verilog的课程设计

基于Verilog的课程设计 直流电机的PWM控制 指导老师:翁嘉民 班级:1031电气自动化技术成员:李高峰9112 王俊才9186 孟令朋9143

目录 1.绪论 (3) 直流电机介绍 (3) 1.1.1直流电机的特点 (3) 1.1.2直流电机的应用 (3) 介绍 (4) 介绍 (4) V ERILOG HDL硬件描述语言 (5) 1.4.1V ERILOG HDL硬件描述语言介绍 (5) 1.4.2V ERILOG HDL功能 (5) PWM脉冲宽度调制介绍 (6) 直流电机的PWM控制 (7) 2.设计原理 (8) 设计原理框图 (8) 原理图 (9) 模块设计 (9) 2.3.1 MOTO_TEST模块 (9) 2.3.4计数器模块 (12) 7实训心得 (13) 参考文献 (13)

直流电机的PWM控制器的设计 1.绪论 直流电机介绍 直流电机是实现直流电能与机械能之间相互转换的一种电力机械,按照直流电机的用途分为直流电动机和直流发电机两类。能够将机械能转换成直流电能的电机称为直流发电机;能够将直流电能转换成机械能的电机称为直流电动机。 1.1.1直流电机的特点 从直流电机与交流电机相比中可以看出,直流电机具有优良的调速性能和启动性能。直流电机具有宽广的调速范围,平滑的无级调速特性,可实现频繁的无级快速启动、制动和反转;过载能力大,能承受频繁的冲击负载;能满足自动化生产系统中各种特殊运行的要求。而直流发电机则能提供无脉动的大功率直流电源,且输出电压可以精确地调节和控制。 1.1.2直流电机的应用 直流电机是交通、工矿、建筑等行业中的常见动力机械,是机电行业人员的重要工作对象和工具。在某些要求调速范围广、速度快、精密度高、控制性能优异的场合,直流电机的应用目前仍占有较大的比重,如大型可逆式轧钢机、内燃机车、矿井卷扬机、造纸和印刷机械、宾馆高速电梯、城市电车、电动自行车、龙门刨床、电力机车、地铁列车、船舶机械、大型精密机床和大型起重机等生产机械中。

CPLD入门教程

目录 前言 (2) 第一章 MAX+plusII 软件和license的获得 (6) 第二章 MAX+plusII 软件的安装和license及驱动的设置 2.1 MAX+plusII 软件的安装 (7) 2.2 MAX+plusII 软件的license设置 (8) 2.3 MAX+plusII 软件的驱动设置 (12) 第三章用VHDL语言设计三人表决器 3.1打开MAX+plusII (22) 3.2新建VHDL文档 (23) 3.3输入设计文件 (24) 3.4保存文件 (25) 3.5检查编译 (27) 3.6创建symbol (32) 3.7波形防真 (33) 3.8下载验证 (40) 第四章用原理图输入的方式设计三人表决器 (47) 第五章用verilog-HDL语言设计三人表决器 (51)

前言 编写本入门教程(V1.2)的目点是为了让FPGA/CPLD初学者快速地入门。该教程的特点是通过基本概念讲解和实际的例子来让初学者迅速了解FPGA/CPLD。该教程是共享文件,可以复制、下载、转载,如果转载该文章请注明出处:https://www.doczj.com/doc/2e14785936.html,;该教程未经许可,不得用于商业用途。 FPGA/CPLD是电子设计领域中最具活力和发展前途的一项技术,它的影响丝毫不亚于70年代单片机的发明和使用。 FPGA/CPLD的基本知识: 1.什么是FPGA/CPLD FPGA (Field Programmable Gate Array)是现场可编程门阵列,CPLD是复杂的可编程逻辑器件(Complex Programmable Logic Device)的简称,不同厂家有不同的称呼,Xilinx把SRAM工艺,要外挂配置用的EEPROM的PLD叫FPGA,把Flash工艺(类似EEPROM工艺),乘积项结构的PLD叫CPLD; Altera把自己的PLD产品MAX系列(EEPROM工艺),FLEX/ACEX/APEX系列(SRAM工艺)都叫作CPLD,即复杂PLD(Complex PLD),由于FLEX/ACEX/APEX系列也是SRAM工艺,要外挂配置用的EPROM,用法和Xilinx的FPGA一样,所以很多人把Altera的FELX/ACEX/APEX系列产品也叫做FPGA. 但由于FPGA和CPLD功能基本相同,只是工艺和实现形式不同,所以初学者可以不要详细区分,我们可以统称为FPGA/CPLD。 2.FPGA/CPLD的用途:

Verilog HDL课程设计

人民武装学院Verilog HDL课程设计洗衣机控制器的设计 学生姓名: 周云 学号: PB102027115 专业: 电子信息科学与技术 年级: 2010 级 指导老师: 周骅老师 时间: 2011年12月22日

目录 引言...................................................................................................................... - 3 - 一、设计内容...................................................................................................... - 4 - 1.设计内容.................................................................................................... - 4 - 2.功能............................................................................................................ - 4 - 二、洗衣机控制器的工作原理.......................................................................... - 6 - 1. 洗衣机的工作状态.................................................................................. - 6 - 2. 全自动洗衣过程...................................................................................... - 7 - 3.单独执行某个洗衣程序............................................................................ - 8 - 三、洗衣机的状态转换图.................................................................................. - 9 - 1.洗衣机的状态转换图................................................................................ - 9 - 2. 设计思路.................................................................................................. - 9 - 四、设计程序.................................................................................................... - 11 - 1.全自动洗衣机主程序.............................................................................. - 11 - 2.全自动洗衣机测试程序.......................................................................... - 15 - 五、步骤及仿真图............................................................................................ - 17 - 1.在代码提示框架中完成核心子模块wash_ctrl.v的设计 ................... - 17 - 2.对核心子模块wash_ctrl.v 进行时序仿真 ........................................... - 17 - 六、功能图........................................................................................................ - 20 - 1.设计顶层图形文件,编译.................................................................... - 20 - 2.功能引脚锁定.......................................................................................... - 20 - 心得体会............................................................................................................ - 22 -

基于FPGA的SDRAM实验Verilog源代码

// megafunction wizard: %ALTPLL% // GENERATION: STANDARD // VERSION: WM1.0 // MODULE: altpll // ============================================================ // File Name: clk_ctrl.v // Megafunction Name(s): // altpll // // Simulation Library Files(s): // altera_mf // ============================================================ // ************************************************************ // THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! // // 11.0 Build 208 07/03/2011 SP 1 SJ Full Version // ************************************************************ //Copyright (C) 1991-2011 Altera Corporation //Your use of Altera Corporation's design tools, logic functions //and other software and tools, and its AMPP partner logic //functions, and any output files from any of the foregoing //(including device programming or simulation files), and any //associated documentation or information are expressly subject //to the terms and conditions of the Altera Program License //Subscription Agreement, Altera MegaCore Function License //Agreement, or other applicable license agreement, including, //without limitation, that your use is for the sole purpose of //programming logic devices manufactured by Altera and sold by //Altera or its authorized distributors. Please refer to the //applicable agreement for further details. // synopsystranslate_off `timescale 1 ps / 1 ps // synopsystranslate_on moduleclk_ctrl ( areset, inclk0, c0, c1, c2,

verilog课程设计—交通灯1

课程设计 课程名称__EDA技术综合设计与实践__ 题目名称交通灯控制系统 学生学院信息工程学院 专业班级通信工程08(4) 学号 3108002925 学生姓名高高 指导教师李学易 2011 年12 月26 日

基于FPGA 的交通灯控制器的设计 摘要:Verilog 是广泛应用的硬件描述语言,可以用在硬件设计流程的建模、综合和模拟等多个阶段。随着硬件设计规模的不断扩大,应用硬件描述语言进行描述的CPLD 结构,成为设计专用集成电路和其他集成电路的主流。现代城市在日常运行控制中,越来越多的使用红绿灯对交通进行指挥和管理。而一套完整的交通灯控制系统通常要实现自动控制和手动控制去实现其红绿灯的转换。 基于FPGA 设计的交通灯控制系统电路简单、可靠性好。本设计利用Verilog HDL 语言、采用层次化混合输入方式,可控制4个路口的红、黄、绿、左转四盏信号灯,让其按特定的规律进行变化。在QUARTUSⅡ下对系统进行了综合与仿真。仿真结果表明系统可实现十字路口红绿灯及左转弯控制和倒计时显示,并能够自动控制交通灯转变。通过应用Verilog HDL 对交通灯控制器的设计,达到对Verilog HDL 的理解 关键词:FPGA;交通灯自动控制;V erilog HDL;Quartus Ⅱ 1.交通信号控制器设计要求与思路 1.1设计要求 在交通灯系统中(图1),路口1、2、3、4均需要红、黄、绿、左转四盏灯(用RYGL分别表示) ,并且每个路口都需要一个倒数的计时器,假设绿灯每次维持的时间是40 s ,黄灯为5 s ,左转灯10s,红灯60s,黄灯亮时以一定的频率闪动。交通灯系统大多是自动控制来指挥交通的,但有时需要由交警手动控制红绿灯,所以要求设 计的该交通信号系统需要具有该功能。 实现设计目标如下: (1)设计一个十字路口的交通灯控制电路,每条路配有红、黄、绿交通信号灯,通过电路对十字路口的两组交通灯的状态实现自动循环控制; (2)实现东西车道和南北车道上的车辆交替运行,绿灯每次维持的时间是40 s ,黄灯为5 s ,左转灯10s,红灯60s; (3)要求黄灯亮5 秒后,红灯才能转为绿灯,黄灯亮时以一定的频率闪动; (4)东西车道和南北车道每次通行的时间不同且可调; 图1 交通灯系统示意图

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