精华内容
下载资源
问答
  • verilog hdl

    2018-05-08 10:30:15
    verilog HDL examples ,基于verilog的非常实用的一些举例链接,可以直接下载
  • verilog HDL

    2012-06-28 12:12:21
    verilog HDL
  • Verilog HDL

    2018-08-06 14:36:46
    使用verilog HDL硬件描述语言编写,CPLD型号为MAX3128ATC100-10 有两个按键,增大和减小,单击计数一次,按键超过2秒以后,计数速度变快,双击按键,清零,数字在数码管显示,用到了自顶向下的设计,按键去抖动状态...
  • Verilog HDL——移位运算符

    万次阅读 2017-03-06 21:10:00
    Verilog HDL学习笔记——语法

    概述

    在Verilog HDL中有两种移位运算符。
    <<:(左移位运算符) >>:(右移位运算符)

    其使用方法如下:
    a >> n;
    a << n;
    a代表要进行移位的操作数,n代表要移几位。这两种移位运算都用0来填补移出的空位。下面举例说明:
    module shift;
    reg [3:0] start, result;
    initial begin
    start = 1; //start在初始时刻设为值0001
    result = (start<<2); //移位后,start的值0100,然后赋给result
    end
    endmodule


    例子

    从上面的例子可以看出,start在移过两位以后,用0来填补空出的位。进行移位运算时应注意移位前后变量的位数,下面举例说明。
    4’b1001<<1 = 5’b10010; //左移1位后用0填补低位
    4’b1001<<2 = 6’b100100; //左移2位后用00填补低位
    1<<6 = 32’b1000000; //左移6位后用000000填补低位
    4’b1001>>1 = 4’b0100; //右移1位后,低1位丢失,高1位用0填补
    4’b1001>>4 = 4’b0000; //右移4位后,低4位丢失,高4位用0填补


    经验

    always @ (CNTVAL_1)
    begin
     CNTVAL_1_shift <= CNTVAL_1 << 1 ;
     CNTVAL_1_3to4 <= CNTVAL_1_shift >> 1 ;
     //CNTVAL_1 shift
     	 // 000-0000 001-0010 010-0100 011-0110                       /    // 100-1000 101-1010 110-1100 111-1110
     //CNTVAL_1 shift right 
        // 0000-0000 0010-0001 0100-0010 0110-0011                 /   // 1000-0100 1010-0101 1100-0110 1110-0111                
    end 
    

    上述代码将CNTVAL_1先左移,再右移,实现在3bit字长的二进制前添加了一个0,将其扩展为4位。中间的变化过程在注释中可见。

    展开全文
  • 电子密码锁的设计(Verilog HDL实现)

    万次阅读 多人点赞 2020-06-25 21:45:53
    电子密码锁的设计(Verilog HDL实现) 任务书如下:(需要源码请留下邮箱,下面实验报告的代码可能不完整) 实验报告如下: 一、社会调研与资料查阅 调研对象:锁具市场和各大小区的门禁系统。 工作过程与方法:经过在...

    电子密码锁的设计(Verilog HDL实现)

    下载链接:源码点我

    任务书如下:

    (需要源码请点个关注后留下邮箱,下面实验报告的代码可能不完整)

    在这里插入图片描述
    实验报告如下:

    一、社会调研与资料查阅

    调研对象:锁具市场和各大小区的门禁系统。
    工作过程与方法:经过在各种锁具市场的走访,发现国内大部分人使用的还是机械锁。而且,当下的假冒伪劣产品泛滥成灾,互开率非常高,互开率,是指各种锁具的一个技术质量标准,也就是一把钥匙能开几把锁的比率。

    二、需求分析

    1.系统功能目标
    设计一个电子密码锁,实现设置修改密码和开锁的功能
    (1)基本功能
    ① 可设置并保存四位密码数字,并在数码管中显示1111;
    ② 先按开锁键,之后开始输入密码,并显示;若三次输入错误,则锁定,需要按解锁键,并输入解锁密码(固定为0)后再次尝试;
    ③ 密码输入错误和密码输入正确均有相应的提醒信息(如LED亮或蜂鸣器发声等);
    ④ 可删除输入的数字,删除的是最后输入的数字。
    (2)扩展功能
    当前输入的数字在最右侧数码管显示,前面输入的数字自动左移一个数字位置。
    2、输入输出方案
    用预置的密码0007先开锁
    设置新密码0076
    关锁并验证新密码0076
    输入三次错误的密码进入锁定状态
    输入解锁密码接触锁定

    三、系统设计方案

    1.功能模块图
    在这里插入图片描述
    在这里插入图片描述
    (1)密码输入控制模块
    在这里插入图片描述
    引脚:
    inputs[9…0]:密码输入
    en[3…0]:使能
    check:开锁键
    outputs[9.0]:密码输出结果
    checkout:输出校验信号
    上边为输入密码的控制模块,en为计数器的计数值,当en为0011即密码已经输入错误三次的时候,阻塞这个inputs和check信号。
    (2)密码锁控制模块
    在这里插入图片描述
    各个信号说明
    Clk—时钟信号
    back–删除键,每按一次back,最后输入的数字将被删除,密码显示右移一位,最高位补0。
    check–密码校验信号–锁关着时,输入密码按check,则比较看是否开锁
    set–修改密码–锁打开时,输入密码按set则将密码送入锁存器所存,密码显示电路清零。
    close–关锁信号–在锁开着时按下close,锁将被锁上.
    store–存密码的信号
    wrong–密码输入错误的信号,让外部计数器计数一次
    code—寄存器中存储的密码
    lock—锁是否打开的状态信号,1代表锁被打开,0代表锁关闭
    num—输入的密码
    (3)存储密码模块
    在这里插入图片描述
    用2个8位寄存器74377扩展为一个16位寄存器,用来存储密码(每四位二进制代表一位十进制密码)
    (4)计数模块
    在这里插入图片描述
    此模块用来检验密码输入错误的次数,如果输错三次,会给密码输入控制模块一个激励信号,阻塞用户的输入,只有当输入解锁密码后才能再次输入。
    (5)七段译码模块
    在这里插入图片描述
    用四个七段数码管7447来动态显示密码的输入。
    2、技术方案论证
    (1)技术可行性
    EDA技术是随着集成电路和计算机技术的飞速发展而产生的一种高级、快速、有效的电子设计自动化工具。它是为解决自动控制系统设计而提出的,从70年代经历了计算机辅助设计(CAD),计算机辅助工程(CAE),电子系统设计自动化(ESDA)三个阶段。第三代EDA工具根据工程设计中的瓶颈和矛盾对设计数据库实现了统一管理,并提出了并行设计环境概念,提供了独立于工艺和厂家的系统级的设计工具。EDA关键技术之一就是采用硬件描述语言对硬件电路进行描述,且具有系统级仿真和综合能力。目前应用比较广泛的硬件描述语言就是Verilog HDL。
    Verilog HDL和VHDL一样,是目前大规模集成电路中最具代表性、使用最广泛的硬件描述语言之一。Verilog HDL有如下优势:
    1>能够在不同的抽象层次上,如系统级、行为级、RTL级、门级和开关级对设计系统进行精确而简练的描述。
    2>能够在每个抽象层次上对设计进行仿真验证,及时发现可能存在的错误,缩短设计周期,并保存()整个设计过程的正确性。
    3>语法类似于C语言,学习和掌握比较容易。

    四、阶段进度计划与成本考虑

    1、阶段进度计划:
    在这里插入图片描述
    2、方案成本调研
    七段数码管:4个
    按键与开关:
    印刷电路板:
    FPGA芯片:4位二进制同步加法计数器74161、七段数码管7447、8位寄存器74377

    五、系统实现

    1、功能块的实现
    (1)设置密码
    在这里插入图片描述
    在这里插入图片描述
    在锁打开的情况下,设置一个新密码0076,密码锁控制模块hui 输出一个store信号,该信号传到寄存器模块的时钟上升沿,存储密码。
    (2)开锁
    我们用新设置的密码,再次尝试开锁,当lock置1说明锁成功打开
    在这里插入图片描述
    (3)密码输入
    在这里插入图片描述
    用10位二进制数字开关代表十进制数字0-9,即最终用16位二进制来存储四位十进制密码,每次输入密码的过程都是输出据左移的过程。
    (3)密码删除
    在这里插入图片描述
    删除密码的过程就是数据右移的过程。
    (4)输入信号控制
    在这里插入图片描述
    计数器计数的值是密码输入错误的次数,一旦输错三次就会将输入信号阻塞,除非输入解锁密码0000000001,才会解除这种阻塞状态。
    2、仿真分析
    功能仿真(前仿真):
    功能仿真是指在一个设计中, 在设计实现前对所创建的逻辑进行的验证其功能是否正确的过程。 布局布线以前的仿真都称作功能仿真, 它包括综合前仿真( Pre-Synthesis Simulation )和综合后仿真( Post-Synthesis 
    Simulation )。 综合前仿真主要针对基于原理框图的设计 ; 综合后仿真既适合原理图设计 , 也适合基于 HDL 语言的设计。
    时序仿真(后仿真)  
        时序仿真使用布局布线后器件给出的模块和连线的延时信息, 在最坏的情况下对电路的行为作出实际地估价。 时序仿真使用的仿真器和功能仿真使用的仿真器是相同的, 所需的流程和激励也是相同的; 惟一的差别是为时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时, 并且在仿真结果波形图中,时序仿真后的信号加载了时延, 而功能仿真没有
    (1)开锁
    在这里插入图片描述
    先用预置的密码0007开锁,在输入的时候由于是用10位二进制代替十进制数据输入,所以依次输入000000001,0000000001,0000000001,0010000000,并在时钟上升沿给出check开锁信号,观察到下面lock信号由0->1,说明已经成功开锁。
    (2)设置密码
    在这里插入图片描述
    在锁打开之后,我们再次输入一个6,即此时电路中的密码为0076,我们给出set信号,此时lockcode模块会将激励信号store传到寄存器的时钟端给出一个时钟上升沿来将密码锁存,存储成功后在七段数码管中显示1111(观察p3p2p1p0)。
    我们现在尝试用新设置的密码再次开锁,先在时钟上升沿给一个close信号,让锁处于关闭状态,然后依次输入0076(就是刚设置的新密码),再次在时钟上升沿给出check信号验证密码,通过下面的仿真图观察到lock的状态由0变到1,说明锁再次被成功打开。
    在这里插入图片描述
    (3)删除当前输入的一位密码

    在这里插入图片描述
    给出删除信号back,我们观察密码的变化,由0076变为0007,说明成功将当前输入的密码删除。
    (4)测试三次输入错误锁定状态。
    我们首先输入close信号将锁关闭,然后输入一个错误的密码0006,并连续给出三次check信号,我们观察到计数器的值依次为0001、0010、0011,已经试过三次错误的密码,然后再输入密码5,此时电路中的密码为0065,再次给出check信号,观察到password的值仍旧为0006,说明此时已经成功的进入锁定状态,最后一次的输入并没有送到电路中去。
    在这里插入图片描述
    3、引脚分配表
    在这里插入图片描述

    六、展望

    1.问题与解决
    问题一:不知道怎么实现输入三次错误密码阻塞输入信号
    解决:通过加一个输入信号的控制模块,通过判断计数器的值来决定是否将输入信号阻塞在控制模块。
    问题二:模块集成的时候出现了问题
    解决:通过小组开会讨论,及时仿真测试等手段排除了故障。
    2、系统不足与扩展展望。
    大多信号需要手动输入,离全自动化的实现还有一点距离。
    参考文献:
    [1] 数字电路设计及Verilog HDL实现. 康磊,李润洲编著. 西安:西安电子科技大学出版社,2010。
    [2] 王金明,数字系统设计与verilog HDL 第三版。
    [3] 黄乡生,朱星华,EDA技术与应用研究性实践教学指导书 第二版。

    展开全文
  • verilog HDL教程

    2018-07-12 09:39:15
    verilog HDL语言介绍,数字系统设计与Verilog HDL语言。
  • Verilog HDL简介

    2017-02-26 22:22:15
    Verilog HDL使用简介;什么是Verilog HDL? Verilog HDL vs. VHDL; Verilog HDL语法; 设计描述层次; 设计的测试与验证; 可综合的设计; 有限状态机(FSM); 一个除法器的设计实例;常用仿真器和综合软件
  • VerilogHDL那些事儿

    2018-07-26 20:08:35
    该压缩包包括《VerilogHDL那些事儿》四部曲: VerilogHDL扫盲文.pdf VerilogHDL那些事儿_建模篇.pdf Verilog_HDL_那些事儿_时序篇.pdf VerilogHDL那些事儿_整合篇.pdf
  • verilog hdl 与通信系统基础知识相结合 verilog hdl 与通信系统基础知识相结合 verilog hdl 与通信系统基础知识相结合 verilog hdl 与通信系统基础知识相结合
  • Verilog HDL 语言概述

    2020-12-09 14:18:24
    Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL 语言提供了编程语言...
  • Verilog HDL高级数字设计(第二版)课后作业Verilog代码,很全的资料哦!
  • Verilog HDL发展历史

    2020-12-09 14:18:45
    Verilog HDL 语言最初是于1983 年由Gateway Design Automation 公司为其模拟器产品开发的硬件建模语言。那时它只是一种专用语言。由于他们的模拟、仿真器产品的广泛使用,Verilog HDL 作为一种便于使用且实用的语言...
  • Verilog HDL课件

    2018-02-25 10:19:03
    Verilog HDL课件
  • Verilog HDL知识思维导图,更多内容请移步:https://gitee.com/youxiaoquan/VerilogHDL-Tutorial
  • Verilog HDL 快速入门

    万次阅读 多人点赞 2018-04-28 16:01:56
    Verilog HDL 快速入门Verilog HDL是一种硬件描述语言(HDL:Hardware Description ...注意,VerilogHDL是一种描述语言,它和常见的编程语言C有根本的不同。C语言,让计算机的CPU从上往下按顺序执行每一条指令,执行完...

    Verilog HDL 快速入门

    Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),它是以文本形式来描述数字系统硬件的结构和行为的语言。 世界上最流行的两种硬件描述语言是Verilog HDL和VHDL。

    注意,VerilogHDL是一种描述语言,它和常见的编程语言C有根本的不同。C语言,让计算机的CPU从上往下按顺序执行每一条指令,执行完程序就结束了。

    而,VerilogHDL主要是描述了一个数字模块的结构,或者行为。有点像商业合同,合同里面也会描述产品的结构,产品的功能等等。合同的每一个条款,并不需要严格的先后顺序,只要把项目的方方面面都考虑完整,写下来就OK了。VerilogHDL也是这样。

    我们用VerilogHDL描述数字模块的功能,剩下的交给编译器(如,Quartus),编译器会根据我们的要求设计重构FPGA内部硬件。对于大批懒人来说,这技术简直碉堡了。这就是EDA(Electronic Design Automation,电子设计自动化)。


    好,下面就来认识一下VerilogHDL 
    我们先设计一个“数据选择器”: 
    s是数据选择控制端, 
    a,b是输入信号,y是输出信号 
    这里写图片描述 
    代码如下:

    module mux2_1(a, b, s, y); //模块名、模块接口名
        input a, b, s;        // 定义输入端口
        output y;              // 定义输出端口
    
        /* s为0时,选择a输出;
            s为1时,选择b输出。*/  
        assign y = (s == 0) ? a : b;  //输出信号
    endmodule
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    每个Verilog文件中都有一个module 开始,endmodule 结束的代码块。 
    这个代码块的定义了一个名字叫 mux2_1 的模块,模块名后面紧跟的括号内写明了该模块的接口信号,相当于数字器件的引脚。 
    但是括号内没有说明接口的信号方向,所以紧跟着另起一行用input 和output 再说明一下。注释和C语法一样,可以用// 或 /* */ 。 
    assign 是Verilog的关键词,书上称为连续赋值。我一般把他视为“连线”操作,assign后面的紧跟的 y 在硬件上是一根导线(或输出引脚)。 
    assign  y = (s == 0) ? a : b; 
    这句话的意思是:s如果为0,那么等号左边就是a,否则就是b。将这个表达式的输出结果接在输出引脚 y 上。 
    这就是一个简单的Verilog程序,不需要我们去设计与非门,直接表达你的你想要的功能就好了。然后,编译下载到FPGA,功能就实现了。

    要注意的是,assign 后面永远跟着一个 =,它们是一起使用的。 
    即,assign xx = zz;


    上面的2选1数据选择器,内部实现结构如下: 
    这里写图片描述 
    所以,上面的assign语句还可以这样写,直接使用逻辑表达式: 
    assign y = (a & (~ s)) | (b & s); 
    这个是在门级对逻辑关系进行描述,所以不属于行为描述,算是结构描述吧。下面这种描述方式,叫做门原语,算结构描述。这里的关键词wire 表示电路中的导线(信号线)。

    module mux2_1(a, b, s, y);
        input a, b, s;
        output y;
        wire ns, as, bs;
    
        not(ns, s);//这里使用了一个非门,输出是ns,输入是s
        and(as, a, ns);//使用一个与门,输出as,输入a和ns
        and(bs, b, s);//使用与门,输出bs,输入b和s
        or(y, as, bs);//使用或门,输出y,输入as和bs
    endmodule
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    看,这是告诉我们电路中有什么元器件,又是怎么连接的,所以这个属于结构描述。 
    很明显,有时候结构描述比行为描述要费力得多,而且不太容易理解程序功能。 
    另外,上面的这个程序中,这4个逻辑门的顺序,可以随便写,不用管先后顺序。


    这个数据选择器,还可以使用如下行为描述方法:

    module mux2_1(a, b, s, y);
        input a, b, s; 
        output y; 
        reg  y; //reg 表示寄存器
    
        always @(a, b, s)
        begin
            if(!s) y = a;
            else y = b;
        end
    endmodule
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    这里reg表示寄存器(存储器),需要提醒一下的是,assign后面只能接wire型,不能接reg型。(当然output从物理上也是wire) 
    为什么不能?因为寄存器的赋值除了需要输入信号,还需要触发信号(例如D触发器寄存器),assign?sorry,he can’t。

    always @(a, b, s)中,括号里面的输入信号a,b,s表示敏感信号。 
    always @( ) 是连在一起使用的。 
    这句话的意思是,敏感信号列表中的任何一个信号发生变化,将会引发 
    begin …… end 之间的行为。 
    Verilog用begin和end包围代码段,相当于c语言中的大括号{ }的功能。 
    if(!s) y = a; 
    这里的“=”单独使用,叫做“阻塞赋值”。我把他理解为“串行赋值”。 
    比如,有这么一段代码: 
    b=a; 
    c=b; 
    那么最后,c的值就等于a,这个行为在描述的时候,语句的先后顺序,决定了赋值的先后。 
    在Verilog中,和它对应的还有一个“非阻塞赋值”,表示方法是 <=,我把这种赋值称为“并行赋值”。具体区别,请参考另一篇短文阻塞赋值和非阻塞赋值

    展开全文
  • Verilog HDL 简介

    2020-12-09 14:19:04
    Verilog HDL 是一种硬件描述语言,用于从算法级、RTL级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可介于简单的门级和完整的电子数字系统之间。数字系统可按层次描述。
  • VerilogHDL

    2008-12-02 15:58:45
    很好的学习资料,包含了Verilog的使用,试验等。
  • 王金明 Verilog HDL

    2018-05-17 12:27:00
    王金明 Verilog HDL程序设计教程,本书对VerilogHDL进行详细讲解,语法语句可综合等.......
  • verilogHDL高级数字设计是数字电路设计的经典用书,ciletti的书,进阶必看,对数字电路知识有充分的介绍,包含数字基础部分和Verilog数字设计部分以及FPGA相关的设计等
  • VerilogHDL扫盲文

    2017-09-01 15:39:27
    VerilogHDL扫盲文,推荐初学FPGA的同学。VerilogHDL扫盲文,推荐初学FPGA的同学。VerilogHDL扫盲文,推荐初学FPGA的同学。
  • VerilogHDL总结

    2021-01-27 11:31:39
    VerilogHDL是一种硬件描述语言,其中HDL则是HardwareDescriptionLanguage的缩写。因此,利用Verilog编写的程序最终会通过工具转换为具体的电路模块。此外,利用Verilog编写的模型可以是实际电路的不同级别的抽象,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,546
精华内容 6,218
关键字:

veriloghdl