1.了解VGA协议 VGA协议有5个输入信号,列同步信号(HSYNC Signal),行同步信号(VSYNC Signal),红-绿-蓝,颜色信号(RGB Signal). 一帧屏幕的显示是由行从上至下扫描,列从左至右填充.     以800x600x60Hz为例: 对于列填充信号:a是拉低的128个列像素,b是拉高的88个列像素,c是拉高的800个列像素,d是拉高的40个列像素. 对于行扫描信号:o是拉低的4个行像素,p是拉高的23个行像素,q是拉高的600个行像素,r是拉高的1个行像素.  …
实验一:永远的流水灯 扫描频率配置为100Hz,即是说扫描周期为10ms.这里需要注意的是扫描周期的概念.流水灯嘛,顾名思义,扫描周期指的是流水灯扫一轮所需要的时间.听到说周期,就应该想到在建模的时候需要写计数器模块,这个计数器模块应该是神一般的独立存在,独立运行.每隔10ms复位一次,复位后又重新开始计数. 实验二:闪耀灯和流水灯 闪耀灯涉及到闪耀频率,流水灯涉及到扫描频率的概率.这里先区分一下闪耀频率和扫描频率的概念.闪耀频率对应闪耀周期,闪耀周期是针对于单个LED灯而言的,即是指LED灯亮…
1.PS2接口与协议时序图 对于PS2的接口来说,需要额外关注的是PIN5与PIN1,一个是时钟,一个是数据.PS2协议对数据的移位是“CLOCK下降沿”有效,其CLOCK的频率通常在10KHz左右.每当CLOCK的下降沿到来时,发送一位数据. 协议时序图 传输数据定义表 第N位 属性 0 开始位 1~8 数据位 9 校验位 10 结束位 要想获得键盘的数据,我们只需要关注(1~8)数据位,其余的位可以忽略,但程序中要给出相应的处理. 2.电平检测模块 下面对PS2解码过程建模,本模型有两个输入…
1.同步动态扫描 多个数码管的显示采用的是同步动态扫描方法,同步动态扫描指的是:行信号和列信号同步扫描,是一种并行操作. 2.数码管驱动电路实现思路      如果要求数码管显示我们想要的数字,首先需要写一个数据接收模块,这个模块接收数据之后需要做什么样的处理呢?这时候我们会想到两个数码管,其中一个显示十位数字,另一个显示各位数字,即把这个数据的十位传给其中一个数码管,各位数字传给另一个数码管来显示.这样我们就会明确了:数据接收模块需要将接收的数据进行拆分,分别输出其十位数据与个位上的数据 程序…
实验三:按键消抖 首先将按键消抖功能分成了两个模块,电平检查模块和10ms延迟模块.电平检测模块用来检测按键信号的变化(是否被按下),10ms延迟模块用来稳定电平检查模块的输入,进而稳定按键信号,防止其抖动而产生的信号跳变而影响输出. 设计思路:     1.当电平检测模块检查到按键被按下(输入由高电平变为低电平),则拉高H2L_Sig电平,然后拉低. 2.10ms延迟模块,检测到H2L_Sig高电平,则对其进行10ms过滤,拉高输出. 3.当按键被释放,电平检测模块会拉高L2H_Sig电平,然…
基于Verilog HDL的数字时钟设计 一.实验内容:     利用FPGA实现数字时钟设计,附带秒表功能及时间设置功能.时间设置由开关S1和S2控制,分别是增和减.开关S3是模式选择:0是正常时钟显示:1是进入调分模式:2是进入调时模式:3是进入秒表模式,当进入秒表模式时,S1具有启动和停止功能,S2具有复位归零功能.只有四位数码管,所以没有做万年历,下一步会在这个基础上加入定时闹钟. 二.实验板 自个制作的实验板,用的是Altera CycloneIII EP3C40Q240C8N.上面的…
Verilog hdl不是“编程”是“建模” Verilog hdl语言是一种富有“形状”的语言. 如果着手以“建模”去理解Verilog hdl语言,以“形状”去完成Verilog hdl语言的设计.在感觉上Verilog hdl + FPGA是“可所触及”,是一种“实实在在”的感觉,不相等于“编程”时的那种“抽象感”. “低级建模”最基本最简单之意,建模习惯or风格.…
Verilog HDL常用建模方式——<Verilog与数字ASIC设计基础>读书笔记(四) Verilog HDL的基本功能之一是描述可综合的硬件逻辑电路.所谓综合(Synthesis)是指将Verilog HDL程序.原理图等设计输入翻译成由与门(and).或门(or).非门(not)等基本逻辑单元组成的门级连接,并根据设计目标和要求对门级逻辑连接进行优化,得到优化的门级网表文件. Verilog HDL主要有三种建模方式: 4.1结构级建模 结构级建模包括门级建模和分层建模两种情况.门级…
Verilog HDL实用教程笔记 DRC - Design Rule Check 几何规则检查ERC - Electrical Rule Check 电学规则检查自动参数提取LVS - Logic Versus Schematic LVS验证 ESDA - Electronic System Design Automation 第一步,行为级描述 (Behavior Level)第二步,行为级优化与RTL级描述的转换 现有的DA工具只能接受RTL级(Register Transport Lev…
(1)       扫描频率和闪耀频率? 模块: /**************************************** module name:flash_module function:flash a led at 10Hz by yf.x 2014-11-4 ***************/ module flash_module( CLK, RST_n, LED ); input CLK,RST_n; output LED; /************************…
Verilog基本上熟悉了,继续整理一下Verilog的学习笔记吧.前面记载了Verilog的结构,写Verilog的结构有了,但是该怎么写呢?在写之前就得了解一下Verilog的一些基本要素了,也就是Verilog是怎么一点一点写出来的. 一.标识符与注释 前面已经说到,模块名的定义要符合标识符的定义,那么什么是标识符呢?它的语法是什么呢? ①标识符是赋给对象的唯一名称,通过标识符可以提及相应的对象,Verilog语法将对转义标识符中的字符逐个处理. ②标识符可以是字母.数字.下划线和美元符$…
这篇博文是写给要入门Verilog HDL及其初学者的,也算是我对Verilog  HDL学习的一个总结,主要是Verilog HDL的程序结构及其描述,如果有错,欢迎评论指出. 一.Verilog HDL的程序结构 首先我们不开始讲Verilog HDL的语法,我们从Verilog HDL的程序结构出发.相信大家都看过芯片吧,它有个名字,有个外壳,外壳向外伸出有引脚(BGA封装的那种请不要乱搅和...),然后芯片它可以实现一定的功能. Ok,知道这些之后,我们就来看看Verilog HDL的描…
消失了好久,没有写文章,也没有做笔记,因为最近再赶一个比赛,时间很紧,昨天周六终于结束了,所以趁着周末这会儿有时间,写点东西,记录下来.首先我学习FPGA才一年多,我知道自己没有资格谈论一些比较深层次的问题,对于这个行业来说可能我才是一直脚踩在门外面.所以这篇文章是写给一些刚开始学习FPGA.Verilog HDL的同学,我看过一些大神写的代码,然后尽量模仿大神写法,经过好几个大神的影响和自己的习惯摸索,最终算是总结出了一套自己的代码书写风格,当然我的代码风格还是一直在进化中.现在将自己的一些经…
将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第六篇.我尽量每周四篇 2.3 Verilog HDL简单介绍 本书实现的OpenMIPS处理器是使用Verilog HDL编写的,所以本章接下来的几节将介绍Verilog HDL的一些基本知识.包含语法.结构等.由于本书并非一本讲授Verilog HDL的专门书籍,所以此处介绍的内容并非Verilog HDL的所有,仅仅是一些基础知识.以及在OpenMIPS处理器实现过程中会使用到的知识. 读者假设对Verilog HDL有进一步…
本文记录一些关于Verilog HDL的一些技巧.易错.易忘点等(主要是语法上),一方面是方便自己忘记语法时进行查阅翻看,另一方面是分享给大家,如果有错的话,希望大家能够评论指出. 关键词: ·技巧篇: 组合逻辑输出类型选择; 语法上的变量交换; ·易忘篇: case/casex/casez语句; 循环语句: 数制和操作符: 数据类型: ·易错: 技巧篇: 1.组合逻辑输出:描述一个纯组合逻辑电路时,尽量不要把输出定义成输出类型,例如描述下面的电路: )( :] a, // sel=00时,选择…
本文从本人的163博客搬迁至此. 引用了http://blog.sina.com.cn/s/blog_9424755f0101rhrh.html Verilog HDL中常采用数组方式来对存储器进行建模,其使用方式如下: reg [ msb: 1sb] memory1 [ upper1: lower1],memory2 [upper2: lower2],. . . : 例如:reg [0:3 ] MyMem [0:63]//MyMem为64个4位寄存器的数组.reg Bog [1:5]//Bog…
本博文参考:<大规模逻辑设计指导书>,对于写出规范的代码,培养良好的代码风格颇有裨益. wire and register 一个reg变量只能在一个always语句中赋值: 这个说明至关重要啊,如果不满足这个,也许仿真的时候没问题,但是综合时候绝对出现,不可以综合.我就犯过多次这个错误. 曾经写过一篇博客,专门说过:Modelsim下进行功能仿真没问题,可是在ISE综合报错,如何解决? 向量的有效位定义一般是从大到小. 尽管,标准并没有强制这样,但是这样更规范,读代码更加容易. 表达式(Exp…
基于Verilog HDL整数乘法器设计与仿真验证 1.预备知识 整数分为短整数,中整数,长整数,本文只涉及到短整数.短整数:占用一个字节空间,8位,其中最高位为符号位(最高位为1表示为负数,最高位为0表示为正数),取值范围为-127~127. 负数的表示方法为正值的求反又加1.例如: 8’b0000_0100; //表示值:4,正值求反为:8’b1111_1011:再加1表示为:8’b1111_1100,这样便得到了-4的表示方法为:8’b1111_1100. 同理,负值变成正值的方法为:负值…
上一篇讲解了无线安全专题_攻击篇--干扰通信,没在首页待多长时间就被拿下了,看来之后不能只是讲解攻击实战,还要进行技术原理和防御方法的讲解.本篇讲解的是局域网内的MAC泛洪攻击,这种攻击方式主要目的是窃取局域网中的通信数据,例如ftp的账号和密码,下面的实战也是以此为例子.接下来按照原理,场景,攻击实战,防御方法的层次步骤进行讲解. 一.MAC泛洪攻击的原理 MAC泛洪攻击主要是利用局域网交换机的mac学习和老化机制. 1.1交换机的工作流程如下: 局域网中的pc1发送数据帧给pc2,经过交换机…
关于初次使用Verilog HDL语言需要懂的基本语法 1.常量 数字表达式全面的描述方式为:<位宽><进制><数字> 8’b10101100,表示位宽为8的二进制数. 2.参数 Parameter 参数名=表达式: 3.变量 reg型:通过赋值语句来改变寄存器存储值,相当于改变触发器存储的值.reg型数据常用来表示“always”模块内的指定信号,常代表触发器.通常,在设计的过程中与always模块结合使用,通过使用行为描述语句来表达逻辑关系. 注意:在“always…
[连载] FPGA Verilog HDL 系列实例 Verilog HDL 之 步进电机驱动控制 步进电机的用途还是非常广泛的,目前打印机,绘图仪,机器人等等设备都以步进电机为动力核心.那么,下面我们就了解下什么是步进电机,它是怎么控制的. 一.步进电机相关知识简介 1.步进电机概述 步进电机是一种能够将电脉冲信号转换成角位移或线位移的机电元件,它实际上是一种单相或多相同步电动机.单相步进电动机有单路电脉冲驱动,输出功率一般很小,其用途为微小功率驱动.多相步进电动机有多相方波脉冲驱动,用途很广…
Verilog HDL基础语法讲解之模块代码基本结构   本章主要讲解Verilog基础语法的内容,文章以一个最简单的例子"二选一多路器"来引入一个最简单的Verilog设计文件的基本结构. 以下为本章中例子中的代码: 01    /*======================================= 02    *    file neme : mux2.v 03    *    author    :    小梅哥 04    *    Verison    :    …
一个设计是由一个个模块(module)构成的.一个模块的设计如下: 1.模块内容是嵌在module 和endmodule两个语句之间.每个模块实现特定的功能,模块可进行层次的嵌套,因此可以将大型的数字电路设计分割成大小不一的小模块来实现特定的功能,最 后通过由顶层模块调用子模块来实现整体功能,这就是Top-Down的设计思想,如 3.3.1的例[3]. 2.模块包括接口描述部分和逻辑功能描述部分.这可以把模块与器件相类比. 模块的端口定义部分: 如上例: module addr (a, b, c…
我们会继续上传新书<自己动手写处理器>(未公布),今天是第七章,我每星期试试4 2.6 Verilog HDL行为语句 2.6.1 过程语句 Verilog定义的模块一般包含有过程语句,过程语句有两种:initial.always.当中initial经常使用于仿真中的初始化.当中的语句仅仅运行一次,而always中语句则是不断反复运行的.此外,always过程语句是可综合的,initial过程语句是不可综合的.       1.always过程语句 always过程语句的格式如图2-10所看到…
菜鸟做的的小实验链接汇总:           1.基于Verilog HDL 的数字时钟设计 2.乘法器 3.触发器(基本的SR触发器.同步触发器.D触发器) 4.基于Verilog HDL的ADC0809CCN数据采样 5.基于Verilog HDL 的数字电压表设计 6.LCD12864 液晶显示-汉字及自定义显示(并口) 7.LCD12864 液晶显示-汉字及自定义显示(串口) 8.基于M9K块配置ROM的LCD12864图片显示实验 9.PS2键盘 + LCD12864 实验…
本次实验是在“基于Verilog HDL的ADC0809CCN数据采样”实验上进一步改进,利用ADC0809采集到的8位数据,进行BCD编码,以供查表方式相加进行显示,本次实验用三位数码管. ADC0809的8位数数据BCD编码方式,低四位与高四位分开进行编码,其对应值我也是从网上得来的,具体对应值请看代码,编完码得到12位宽的数据后,对两个编码进行相加,如代码中的cout[11:0] = L[11:0] + H[11:0],这里注意,高四位[11:8].中四位[7:4].低四位[3:0]. 假…
源:流水线技术原理和Verilog HDL实现 所谓流水线处理,如同生产装配线一样,将操作执行工作量分成若干个时间上均衡的操作段,从流水线的起点连续地输入,流水线的各操作段以重叠方式执行.这使得操作执行速度只与流水线输入的速度有关,而与处理所需的时间无关.这样,在理想的流水操作状态下,其运行效率很高.   如果某个设计的处理流程分为若干步骤,而且整个数据处理是单流向的,即没有反馈或者迭代运算,前一个步骤的输出是下一个步骤的输入,则可以采用流水线设计方法来提高系统的工作频率.   下面用8位全加器…
博主之前写过一篇文章来谈论如何高效的编写Verlog HDL——菜鸟版,在其中主要强调了使用Notepad++来编写Verilog HDL语言的便捷性,为什么说是菜鸟版呢,因为对于新手来说,在还没有熟悉软件和硬件描述语言的时候,使用Notepad++不需要学习成本,几分钟就能用好,利用其中一些功能,便能相对快捷高效的编写代码.很多人习惯了使用Notepad++,包括我在内.但是当我遇见了它——Vim.相对来说Vim就需要一段时间去适应学习,而且还要合理运用才能发挥出它的最大效率. Vim其实一款…
Do-Now--团队冲刺博客_总结篇 目录 博客链接 作者 1. 第一篇(领航篇) @仇夏 2. 第二篇 @侯泽洋 3. 第三篇 @仇夏 4. 第四篇 @周亚杰 5. 第五篇 @唐才铭 6. 第六篇 @仇夏 7. 第七篇(总结篇) @王志伟 本篇作者@王志伟 一.前言 一转眼七天过去了,冲刺博客也到了最后一篇,决定把这篇博客好好写! 二.今日完成的任务 成员 完成任务 侯泽洋 普通任务页面编写及每日刷新初步实现,每日任务定时刷新功能具体实现. 周亚杰 代码实现设置与个人中心,注册信息的账号显示,…
1--verilog HDL 语言的预编译指令作用:指示在编译verliog HDL源代码前,需要执行哪些操作. 2--模块内容是嵌在module 和endmodule两个语句之间.每个模块实现特定的功能,模块可进行层次的嵌套,因此可以将大型的数字电路设计分割成大小不一的小模块来实现特定的功能,最 后通过由顶层模块调用子模块来实现整体功能. 3--模块包括接口描述部分和逻辑功能描述部分.这可以把模块与器件相类比. 4-verilog hdl语言支持的并行语句主要有一下四种: 连续赋值语句 模块实…