完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 100dongdong 于 2014-7-24 23:42 编辑
【目的】 阿东推出《【连载】阿东带你学习Verilog和Qsys设计》 连载,为了帮助初学者深入掌握FPGA和Verilog设计,Qsys设计。 【目标】FPGA初学者,Verilog爱好者,Qsys爱好者。 【主题】暂定分为两大主题: Verilog设计 & Qsys设计。阿东的经验分享: https://bbs.elecfans.com/jishu_440949_1_1.html 【阿东原创视频连载】 https://bbs.elecfans.com/jishu_443098_1_1.html |
|
相关推荐
|
|
很好的资源 谢谢分享
|
|
|
|
|
|
谢谢楼主哦,很实用的东西
|
|
|
|
|
|
很实用的东西很实用的东西
|
|
|
|
|
|
不错的。。。。。好资料
|
|
|
|
|
|
你好,我正在学习nios,刚看了您的【视频教程_实验2】Qsys_流水灯系统,这个视频中 用到了 8个led,但是我的 开发板 上面只有 四个 led,请问该如何设置呢,谢谢
|
|
|
|
|
|
本帖最后由 100dongdong 于 2014-7-23 22:09 编辑 and_gate详细设计方案 1. AND_GATE简介: And_gate,就是与门,又称“与电路”。执行“与”运算的基本门电路。有几个输入端,只有一个输出端。当所有的输入同时为“1”电平时,输出才为“1”电平,否则输出为“0”电平。 与的含义是:只有当决定一件事情的所有条件都具备时,这个事件才会发生。 与门表达式:F=A&B。 “与”门 用“AND”表示,电路状态表: 2. AND_GATE规格: 二输入与门是最基本的数字电路单元。 3. Verilog HDL源代码Verilog HDL代码为: /************************Copyright (c)***************************** ** @ Dongdong Studio ** **---------------------------------------File Info----------------- ** File name: and_gate ** Last modified Date: 2014-07-20 ** Last Version: 1.0 ** Descriptions: and_gate **----------------------------------------------------------------- ** Created by: dongdong ** Created date: 2014-07-20 ** Version: 1.0 ** Descriptions: The original version ** *******************************************************************/ module and_gate ( //input input a , input b , //output output wire y ); /******************************************************************* ** Main Program ** *******************************************************************/ assign y = a & b; endmodule //end of RTL code 4. 实验可以使用拨码开关的两个按钮来模拟A和B,然后使用一个LED模拟输出Y,只有A和B都为1(高电平),LED才能点亮。 说明: A对应KEY1; B对应KEY2; 5. 日积月累思考四输入与门电路。 6. 综合出的电路and_gate代码综合出的电路如下: 2014-07-20 (C) DongDong Stduio |
|
|
|
|
|
本帖最后由 100dongdong 于 2014-7-23 22:09 编辑 LED详细设计方案 1. LED简介: 发光二极管是电子系统经常用到的器件,一般用来做指示用。 2. LED规格: Xxx 3. 实现原理 使用计数器延时来控制放光二极管。 4. Verilog HDL源代码 Verilog HDL代码为: module LED ( //input sys_clk , sys_rst_n , //output LED ); //input ports input sys_clk ; //system clock; input sys_rst_n ; //system reset, low is active; //output ports output [WIDTH-1:0] LED ; //reg define reg [SIZE-1:0] counter ; reg [WIDTH2-1:0] count ; reg [WIDTH-1:0] LED ; //wire define //parameter define parameter WIDTH = 8; parameter SIZE = 8; parameter WIDTH2 = 18; parameter Para = 50; /******************************************************************************************************* ** Main Program ** ********************************************************************************************************/ always @(posedge sys_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) begin count <= 'b0; end else count <= count + 1'b1; end always @(posedge sys_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) begin counter <= 8'b0; end else if ( count == Para) counter <= counter + 1'b1; end always @(posedge sys_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) begin LED <= 8'b0; end else begin case (counter) 10 : LED = 8'b01111111 ; 20 : LED = 8'b10111111 ; 30 : LED = 8'b11011111 ; 40 : LED = 8'b11101111 ; 50 : LED = 8'b11110111 ; 60 : LED = 8'b11111011 ; 70 : LED = 8'b11111101 ; 80 : LED = 8'b11111110 ; default: LED = 8'b11111111 ; endcase end end endmodule //end of RTL code 5. 日积月累思考其他控制发光二极管放光的办法。考虑用状态机可否实现? 6. 综合出的电路LED代码综合出的电路如下: 2014-07-20 (C) DongDong Stduio |
|
|
|
|
|
本帖最后由 100dongdong 于 2014-7-24 23:18 编辑
边缘检测 实验边缘检测简介 边缘检测电路是常见的基本电路,简单的说就是判断前一个时钟和目前时钟状态的比较,若由0变1,就是上升沿检测电路(posedge edge detection circuit),若由1变为0,就是下降沿检测电路(negedge edge detection circuit)。若上升沿和下降沿都检测,则是双沿检测电路(double edge detection)。 实验任务: 通过按键Key1的关闭产生上升沿和下降沿,上升沿到下降沿的时候产生一个信号,通过LED的亮灭来观察。 程序设计: always @(posedge sys_clk or negedge sys_rst_n) begin if (sys_rst_n == 1'b0) begin ctrl_signal_dly1 <= 1'b0; ctrl_signal_dly2 <= 1'b0; end else begin ctrl_signal_dly1 <= ctrl_signal; ctrl_signal_dly2 <= ctrl_signal_dly1; end end assign posedge_pulse = (ctrl_signal_dly1 & (~ctrl_signal_dly2));//上升沿检测 assign negedge_pulse = (~ctrl_signal_dly1) & ctrl_signal_dly2;//下降沿检测 assign edge_pulse = (ctrl_signal_dly1 ^ ctrl_signal_dly2);//双边检测 |
|
|
|
|
|
本帖最后由 100dongdong 于 2014-7-25 15:52 编辑 SEGLED详细设计方案 1. SEGLED简介: 数码管由七个条状和一个点状发光二极管管芯制成,称为七段数码管。数码管是一类价格便宜、使用简单,通过对其不同的管脚输入相对的电流,使其发亮,从而显示出数字能够显示 时间、日期、温度等所有可用数字表示的参数的器件。 在电器特别是家电领域应用极为广泛,如显示屏、空调、热水器、冰箱等等。绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。 2. SEGLED规格: 编写逻辑使七段数码管计数从0-9循环计数。 3. SEGLED方案目的: 1、使学生掌握数码管的原理和使用方法。 2、使学生掌握利用FPGA的I/O口控制数码管原理和使用方法。 4. SEGLED硬件方案: 七段数码管原理: 拿显示8举例子; 1 1 1 0 1 1 1 1 对应: e g f dp c d b a 数码管类型: 根据其结构的不同,可分为共阳极数码管和共阴极数码管两种。 共阳共阴,是针对数码管的公共脚而说的。典型的一位数码管,一般有10个脚,8个段码(7段加1个小数点),剩下两个脚接在一起。各个段码实际上是一个发光二极管,既然是发光二极管,就有正负极。共阳,也就是说公共脚是正极(阳极),所有的段码实际上是负极,当某一个或某几个段码位接低电平,公共脚接高电平时,对应的段码位就能点亮,进而组合成数字或字母。共阴是公共脚是负极(阴极),段码位是阳极,当公共脚接地,段码位接高电平时,对应段码位点亮。一位数码管就是这样,多位的数码管原理类似。 LED数码管中各段发光二极管的伏安特性和普通二极管类似,只是正向压降较大,正向电阻也较大。在一定范围内,其正向电流与发光亮度成正比。由于常规的数码管起辉电流只有1~2 mA,最大极限电流也只有10~30 mA。共阴共阳与电路接线密切相关,决定了驱动电路的接法,因此在电路设计前要考虑好数码管的类型,否则就不能实现显示的效果了。共阳极的比较容易驱动,共阴极的比较好编程。 LED数码管引脚图: 驱动方式: 静态驱动 是指每个数码管的每一个段码都由一个FPGA的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。优点是编程简单,显示亮度高,缺点是占用I/O端口多。 动态显示驱动 是将所有数码管通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示。将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当FPGA输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于FPGA对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。 本次试验采用静态驱动方式。 6. Verilog HDL源代码 |
|
|
|
|
|
本帖最后由 100dongdong 于 2014-7-27 12:12 编辑 状态机 有限状态机英文名字,Finite State Machine,简称状态机,缩写为FSM。 有限状态机是指输出取决于过去输入部分和当前输入部分的时序逻辑电路。 有限状态机又可以认为是组合逻辑和寄存器逻辑的一种组合。状态机特别适合描 述那些发生有先后顺序或者有逻辑规律的事情,其实这就是状态机的本质。状态 机就是对具有逻辑顺序或时序规律的事件进行描述的一种方法 根据状态机的输出是否与输入条件相关,可将状态机分为两大类,即摩尔 (Moore) 型状态机和米勒 (Mealy) 型状态机。 Mealy 状态机:时序逻辑的输出不仅取决于当前状态,还取决于输入。 Moore 状态机:时序逻辑的输出只取决于当前状态。 根据实际写法,状态机还可以分为一段式、二段式和三段式状态机。 实际应用中三段式使用最多,也最为可靠,避免了状态和输入输出的干 扰,推荐大家使用第三种写法,我们实际项目中基本全部是第三种写法。 本文也着重讲解三段式。 三段式状态机 两段式直接采用组合逻辑输出,而三段式则通过在组合逻辑后再增加一级寄 存器来实现时序逻辑输出。这样做的好处是可以有效地滤去租个逻辑输出的毛刺, 同时可以有效地进行时序计算与约束,另外对于总线形式的输出信号来说,容易 使总线数据对齐,从而减小总线数据间的偏移,减小接收端数据采样出错的频率。 Verilog 红宝书_语法篇 恒创科技出品 三段式状态机的基本格式是: 第一个always语句实现同步状态跳转; 第二个always语句实现组合逻辑; 第三个always语句实现同步输出。 Verilog描述状态机需要注意的事项: 定义模块名和输入输出端口; 定义输入、输出变量或寄存器; 定义时钟和复位信号; 定义状态变量和状态寄存器; 用时钟沿触发的 always 块表示状态转移过程; 在复位信号有效时给状态寄存器赋初始值; 描述状态的转换过程:符合条件,从一个状态到另外一个状态,否则留在原状态; 验证状态转移的正确性,必须完整和全面。 一个三段式状态机例子: |
|
|
|
|
|
本帖最后由 100dongdong 于 2014-8-7 11:32 编辑 LCD1602 1602字符型LCD简介字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图10-53: 图10-53 1602 字符型液晶显示器实物图10.8.2.1 1602LCD的基本参数及引脚功能1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图10-54所示: 图10-54 1602LCD尺寸图1602LCD主要威廉希尔官方网站
参数:显示容量:16×2个字符芯片工作电压:4.5—5.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.95×4.35(W×H)mm引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表10-13所示:
图10-55 读操作时序 图10-56 写操作时序10.8.2.4 1602LCD的RAM地址映射及标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图10-57是1602的内部显示地址。 图10-57 1602LCD内部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A” 图10-58 字符代码与图形对应图10.8.2.5 1602LCD的一般初始化(复位)过程延时15mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置 |
|||||||||||
|
|||||||||||
|
|||||||||||
LCD12864详细设计方案1. LCD12864简介: FYD12864-0402B 是一种具有4 位/8 位并行、2 线或3 线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192 个16*16 点汉字,和128 个16*8点ASCII 字符集。利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。 可以显示8×4 行16×16 点阵的汉字。也可完成图形显示。低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。 2. LCD12864规格: 基本特性: � 低电源电压(VDD:+3.0--+5.5V) � 显示分辨率:128×64点 � 内置汉字字库,提供8192个16×16 点阵汉字(简繁体可选) � 内置 128 个16×8点阵字符 � 2MHZ 时钟频率 � 显示方式:STN、半透、正显 � 驱动方式:1/32DUTY,1/5BIAS � 视角方向:6 点 � 背光方式:侧部高亮白色LED,功耗仅为普通LED 的1/5—1/10 � 通讯方式:串行、并口可选 � 内置DC-DC 转换电路,无需外加负压 � 无需片选信号,简化软件设计 � 工作温度: 0℃ - +55℃ ,存储温度: -20℃ - +60℃ 3. 框图说明12864主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。 4. 管脚说明注意: 1、3脚和18脚之间可以通过电阻阻值大小调节液晶的对比度,本开发板默认使用4.7K阻值大小,如果4.7K和您的液晶显示不匹配,用户可以自己选择合适的阻值焊接上去即可。 2、RW为读写指示。 3、15脚需要接1,因为本开发板使用并行数据方式。 5. 寄存器介绍在使用12864LCD前先必须了解以下功能器件才能进行编程。12864内部功能器件及相关功能如下: 1. 指令寄存器(IR) IR是用于寄存指令码,与数据寄存器数据相对应。当D/I=0时,在E信号下降沿的作用下,指令码写入IR。 2.数据寄存器(DR) DR是用于寄存数据的,与指令寄存器寄存指令相对应。当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7∽DB0数据总线。DR和DDRAM之间的数据传输是模块内部自动执行的。 3.忙标志:BF BF标志提供内部工作情况。BF=1表示模块在内部操作,此时模块不接受外部指令和数据。BF=0时,模块为准备状态,随时可接受外部指令和数据。 利用STATUS READ指令,可以将BF读到DB7总线,从检验模块之工作状态。 4.显示控制触发器DFF 此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAY OFF),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAY OFF)。 DDF的状态是指令DISPLAY ON/OFF和RST信号控制的。 5.XY地址计数器 XY地址计数器是一个9位计数器。高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针。 X地址计数器是没有记数功能的,只能用指令设置。 Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。 6.显示数据RAM(DDRAM) DDRAM是存储图形显示数据的。数据为1表示显示选择,数据为0表示显示非选择。DDRAM与地址和显示位置的关系见DDRAM地址表。 7.Z地址计数器 Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步。当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,RST复位后Z地址计数器为0。 Z地址计数器可以用指令DISPLAY START LINE预置。因此,显示屏幕的起始行就由此指令控制,即DDRAM的数据从哪一行开始显示在屏幕的第一行。此模块的DDRAM共64行,屏幕可以循环滚动显示64行。 12864LCD的指令系统及时序 该类液晶显示模块(即KS0108B及其兼容控制驱动器)的指令系统比较简单,总共只有七种。其指令表如表2所示:
表2:12864LCD指令表 各功能指令分别介绍如下。 · 显示开/关指令
当DB0=1时,LCD显示RAM中的内容;DB0=0时,关闭显示。 2、显示起始行(ROW)设置指令
该指令设置了对应液晶屏最上一行的显示RAM的行号,有规律地改变显示起始行,可以使LCD实现显示滚屏的效果。 3、页(PAGE)设置指令
显示RAM共64行,分8页,每页8行。 4、列地址(Y Address)设置指令
设置了页地址和列地址,就唯一确定了显示RAM中的一个单元,这样MPU就可以 用读、写指令读出该单元中的内容或向该单元写进一个字节数据。 5、读状态指令
该指令用来查询液晶显示模块内部控制器的状态,各参量含义如下: BUSY:1-内部在工作0-正常状态 ON/OFF:1-显示关闭0-显示打开 RESET:1-复位状态0-正常状态 在BUSY和RESET状态时,除读状态指令外,其它指令均不对液晶显示模块产生作用。 在对液晶显示模块操作之前要查询BUSY状态,以确定是否可以对液晶显示模块进行操作。 6、写数据指令
· 读数据指令
读、写数据指令每执行完一次读、写操作,列地址就自动增一。必须注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据。 |
||||||||||
|
||||||||||
|
||||||||||
1842 浏览 1 评论
助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4
1117 浏览 0 评论
2936 浏览 1 评论
2614 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
2906 浏览 0 评论
2146 浏览 58 评论
6087 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-8 12:18 , Processed in 0.776630 second(s), Total 73, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号