摘要:lab14 简单玩一把封装--独立按键的封装本实验利用前面的按键消抖模块和DE2上的资源,设计一个利用pwm控制led发光亮度的实验。1 简介时钟:50MHz,CLOCK_50;复位:SW1,拨下为复位;5个输入:SW0,KEY[3:0];输出:LEDG8;5个输入代表5种不同的PWM,即不同占空比的1KHz的脉冲信号,那么LED的亮的时间也不同,人眼看到的亮度就不同。2 设计工程结构源码1)key_interface_demo.v,本例的顶层模块。调用按键模块和可调pwm模块。 1 module key_interface_demo 2 ( 3 input clk, 4 in...
阅读全文
摘要:VGA驱动之一实验环境DE2 + Quartus II 9.1目标驱动VGA接口,在屏幕上显示一个白色的矩形。设计查阅VGA协议,搞定信号,主要是同步信号。本实验以800*600*60Hz为例。1)同步信号如上2图所示,分别用列同步和行同步来控制显示。各部分的参数如下表1行=1056个点1点= 25ns (怎么算的,查呗,或者1/60/628/1056 = 25.1ns)。要注意的是,不是所有的点扫描都显示出来,只有在行,列同步信号的有效部分,才显示。即800*600.2)至此,就可以把目标分成3个模块,第一个是驱动时钟25ns,可用pll得到,第二个是同步控制,用来产生合适的行、列同步信号,
阅读全文
摘要:lab08—PS/2解码DE2上有一个PS/2接口,可接键盘或鼠标,本实验利用PS/2接口外接一个键盘,并对其按键解码,按下X键,DE2上的LEDG3-0右移;按下W键,LEDG3-0左移,按下Ctrl,反转。1. PS/2 简介研究PS/2解码,只需关心数据和时钟引脚即可。下图是PS/2协议的时序图,读数据是在时钟的下降沿有效。PS/2的时钟大约为10khz。PS/2一桢是11位,对其解码,只需关注1-8位数据位。键盘编码:键盘编码分为通码和断码,按下为通码,释放为断码。比如,按下W不放,每秒约输出10个0x1d。释放W,输出0xf0 0x1d。编码规则,一次只能一个有效输出。2. 设计ps
阅读全文
摘要:lab06--SOS信号之二如上图所示,本实验在lab05的基础上修改控制部分,使得实验效果更实际,由按键启动sos信号的产生。用到lab04的按键消抖模块和lab05的sos产生模块,本实验添加了一个用于协调的控制模块。代码debounce_module2.v 1 /** 2 * File name : debounce_module2.v 3 * 4 */ 5 6 module debounce_module2 7 ( 8 clk, rst_n, pin_in, pin_out 9 );10 11 input clk;12 input rst_n;13 input pin_in;14 ou
阅读全文
摘要:lab05 -- SOS信号之一本实验要做一个sos信号发生器,如上图所示,由2个模块构成,其中sos_module.v用来产生sos信号,对应莫尔斯电码就是. . . _ _ _ . . .,其中点(短音)用100ms的高电平表示,杠(长音)用300ms的高电平表示,空格用50ms的间隔表示。control_module.v作为控制模块,用来产生一个使能信号sos_en_sig。最后,实验的演示验证部分,由于DE2不带蜂鸣器,暂用LEDG8代替。(当然,用蜂鸣器的效果要明显些)。代码sos_module.v 1 /** 2 * File name: sos_module.v 3 * 4 */
阅读全文
摘要:lab04 消抖模块之二本实验当检测到由高到低的电平变化时,产生一个时钟的高脉冲。当检测到由低到高的电平变化时,只消抖,输出不变。代码在lab03的基础上修改如下:delay_module.v1 case (i)2 3 2'd0:4 if (H2L_sig) i <= 2'd1;5 else if (L2H_sig) i <= 2'd3;6 7 2'd1:8 if (count_ms == 4'd10) begin9 isCount <= 1'b0;10 rpin_out <= 1'b1; 11 i <= 2
阅读全文
摘要:lab03 消抖模块之一本实验是一个简单的按键消抖。主要由电平检测和10ms延时2个模块组成。以前,知道按键要消抖,但一直没做过。究其原因,可能是觉得麻烦,效果不炫,悲哀。无论如何,“出来混,总要还的”。咋消抖呢?大大们说,先检测电平变化,再将确定的变化延时输出。说起来简单,其中还有些小九九:1> 消的是什么抖?首先,要搞清楚,“抖”(跳变)是从哪里来的,最开始,我们的常识:按下按键,电平就变了。假设是由高变低。事实上,在按下的过程中,由于,按键大多是机械结构,就会产生轻微的跳变,瞬间(us级)跳变n次。也就是说这个瞬间,电平不是那么“干净”,所以就有了消抖的需求:期颐得到“干净”、确定
阅读全文
摘要:lab 02 闪耀灯和流水灯 这个实验主要是建立上图所示的模块。LEDG3闪烁,LEDG2-0流水。KEY0复位。代码flash_module.v 1 /** 2 * File name: flash_mocule.v 3 * 4 */ 5 6 module flash_module 7 ( 8 clk, rst_n, led_out 9 );10 11 input clk;12 input rst_n;13 output led_out;14 15 parameter T50MS = 22'd2_500_000;16 17 reg [21:0] count;18 19 always
阅读全文
摘要:缘起 偶然,借到块DE2,开始学习Verilog HDL,也是从语法看起,照着书上敲代码,仿真,做lab,下载,貌似入门了,但总是不确定,总是觉得不能把握什么。偶然看到akuei2的《Verilog哪些事儿--建模篇》V4,觉得很好,遂想记录“打谱”的点滴--是为再笔记。Lab 1 永远的流水灯 这名字是直接拿来的,起的太好了,不多言。 这个实验想阐述并行的思想,用4个类似的模块建立1个并行操作的流水灯模块。每隔100ms流动一下。代码:led0_module.v 1 /** 2 * File name: led0_mocule.v 3 * 4 */ 5 6 module led0_modul
阅读全文
摘要:1. 缘起 会了点HDL和数字逻辑基础后,操作DE2上的开关,led,7断码数码管都没啥问题,但至此好像也只能玩玩n年前教科书上都有的lab,啥数字钟,汽车尾灯,交通灯之类。浪费了DE2的资源,未免对不起DE2的价钱。板子上最明显的东东莫过于那个1602的LCD了,遂想玩玩这个东东。伟大的教育培养的惯性思维:照书本来,狗来狗去,国产的似乎就只有一本关于DE2的书(上交的一个博士写的),拜读一下,大半是DE2附带的光盘lab的中译版,。。。总之,DE2的玩法,没在这本书里找到,估计又是应付国内职评的产物。没期望过,所以没啥失望,好在web上tw的教育网页可打开,那边的学生都推荐OO无双说过的那两
阅读全文
摘要:Project 3 本实验实现一个定时器。KEY3可以启动和停止计时。KEY0复位(计数停止)。基本思路就是利用Project 2的分频时钟100Hz驱动十进制的计数器,将4个十进制的计数器串联,那么在HEX3-2上显示的数字就以S递增。本实验包含以下内容:1. 顶层模块的设计。2. 单稳态脉冲的生成。3. 编译报告。设计1. 顶层模块(1)设置状态变量和计数器 (2)设计一个4个数字的行波进位十进制计数器 (3)将计数结果显示在7-segment上 (4)使用选通时钟控制计数器 (5)使用单稳触发复位信号。 (6)用KEY3和KEY0控制状态 (7)把state和reset信号显示在绿色le
阅读全文
摘要:Project 2 本实验主要是练习计数器,以及利用计数器分频。本实验包含以下内容:1. 时钟分频2. 十进制计数器3. 十六进制计数器4. Quartus II的编译报告设计1. 时钟分频 把DE2上的50MHz的时钟分成以下7种: 在顶层模块(diglab2)里我们把上述分频得到的7个时钟组成的数组叫做myclock。 分频所得的时钟可映射到外部I/O接口,以备他用: 把1Hz-10KHz的时钟接到绿色LED.观察.只有1Hz和10Hz的可辨. 本实验分频的思路很简单,先把50MHz的时钟用50分频分成1MHz,然后再用10分频递推分频,直到1Hz.有点像行波进位加法器的思路,同样,性能应
阅读全文
摘要:DE2的基本使用技巧 本篇的3个实验包含DE2的拨动开关,数码管和七段码数码管显示的使用。前提,需要了解Quartus II的基本使用方法。Project 1 通过拨动开关SW15-0设置一个16-bit的值,并将这个值通过按动KEY3显示在HEX3-0上。project 1 code: 1 /* File name : diglab1.v 2 * Functon : The user can set a 16-bit value using toggle switches 15-0 and transfer 3 * value to the first four hex digit disp
阅读全文
摘要:在Quartus II里仿真Verlog设计本文介绍Quartus II仿真器的基本特点。演示仿真器如何判断电路的正确性和性能。 目录l 范例电路 l 使用波形编辑器 l 功能仿真 l 时序仿真 Quartus II软件包含一个仿真器(当然是10.0之前的版本才有J),可用来对在Altera的可编程器件里实现的设计电路做行为和性能仿真。使用测试变量作为输入,观察生成的响应。另外,为了观测I/O引脚的仿真值,可在电路的内部节点添加探针。仿真器使用波形编辑器,便于表达期望的信号。 本文的目标: l 测试设计电路所需的测试变量 l 使用Quartus II波形编辑器画测试波形 l 功能仿真,验证综合
阅读全文
摘要:DE2的光盘自带的入门资料,版本为1.6.分为以下几篇: 1. Quartus II使用指南 2. DE2初始化 3. lpm的使用方法 4. 时序分析和约束 5. 仿真 6. DE2的SDRAM使用方法 7. SOPC简介 8. Nios II简介
阅读全文
摘要:3等奖使用数字分析的自动音频均衡器Institution: Hanyang University Participants: Sung-Wook Kim, Eun-Chan Kim, Bum-Su Jeong Instructor: Professor Jae-Myoung Jeong 设计简介我们的项目是一个使用数字信号分析的自动音频均衡器,可使低端的扬声器发出高端扩音的音质。消费者可据期望的音质复制扬声器的特性并将这些特性应用于低端的扬声器。本项目结构和应用简单,使用户用廉价的扬声器就可以享受较好的音质。 本项目设备经济,不需要升级现有系统就可用于高端的监视设备实现流畅响应。 功能描述均衡
阅读全文
摘要:8 状态机设计:电子火车控制器8.3 火车控制问题图8.1列出一个小型的电子火车系统轨道图。2列火车,分别命名为A和B,运行在轨道上,希望不会碰撞。要避免碰撞,需要一个安全控制器来控制火车无事故的出入交叉点。 为了安全运行,同一时间只能有一列火车出现在给定的轨道段上。图8.1所示的轨道图将轨道分为4部分。每段轨道都有感应器检测火车的出入点。 在图8.1中,有2列火车A和B。例如,假设火车A总是运行在外围轨道,火车B总是运行在内圈轨道。在某一时刻,火车A逆时针运行刚好通过感应器4接近开关3.我们假设火车B也是逆时针运行接近感应器2.既然火车B将要进入公共轨道段(轨道段2)。当火车A到达感应器1必
阅读全文
摘要:Laboratory Exercise 9 简单的处理器图1所示的数字系统包含一些16位的寄存器,一个多选器,一个加/减单元,一个计数器和一个控制单元。数据通过16位的DIN输入。经由16位的多选器,数据可加载到多个寄存器,比如:R0,… ,R7和A。当然,多选器也可以使数据从一个寄存器传输到另一个寄存器。图中多选器的输出叫做总线,通常用来作为数据通道。 加法器或减法器的执行过程:首先通过多选器加载一个16位的数字到寄存器A。然后在总线上加载另一个16位的数字。加/减单元执行指定的运算,结果输出到寄存器G。G中的数据可按需求传输到其他寄存器。 由控制单元决定每个时钟系统执行的操作。指定的数据何
阅读全文
摘要:Introduction 本练习主要研究FPGA片内/外存储器。实现32X8-bit的RAM。 DesignPart I 用LPM实现RAM LPM的用法参阅<Using Library Module in Verilog Design>。 1. Tools / MegaWizard Plug-in Manger /…/ memory compiles创建一个名为ramlpm.v的RAM。 2. 编译,并查看编译报告。RAM占用1个M4K块,256B。 3. 仿真。 仿真结果: 代码part 1: 1 //part 1 用altsyncram LPM构建一个32*8bit RAM
阅读全文
摘要:实验7 有限状态机目的:练习使用有限状态机。 Part I实现一个FSM用于识别2中指定的输入序列:4个1或4个0。输入信号为w,输出为z。当连续4个时钟w=1或0时,z=1;否则,z=0.序列允许重合,比如连续5个时钟w=1,在第4,5个时钟z=1。图1描述了w和z的关系。 状态图如图2所示。用9个触发器,状态编码用独热码,实现本FSM。 在DE2上按以下步骤实现设计: 1. 为FSM项目创建一个新的Quartus II项目。选定目标芯片。 2. 例化9个触发器。只用assign语句指定反馈。注意,独热码便于检查逻辑表达式。使用开关SW0作为FSM的同步复位(低有效)。SW1作为w的输入,按
阅读全文