第二节 LED程序分析
来源:互联网 发布:黑手党3知乎 编辑:程序博客网 时间:2024/06/09 17:24
- LED程序
module LEDs ( LED1 , clk );output LED1;input clk;reg [27:0] timer;always @ (posedge clk) begin timer <= timer + 1; if(timer >= 28'HEFFFFFF) begin timer <= 28'b0; end end assign LED1 = timer[26];endmodule
先看第一条:module LEDs ( LED1 , clk );module(block)是Verilog的基本设计单元。模块是由两部分组成,一部分描述接口,一部分描述逻辑功能,即定义输入是如何影响输出的。每个module都有endmodule 呼应,verilog结构位于之间。模块的端口声明了模块的输入输出口:module 模块名(口 1,口2,...);output LED1;input clk;reg [27:0] timer;是对模块内容的说明。即IO的说明、内部信号声明和功能定义。该部分可以直接在module中进行。always @ (posedge clk)如果满足则执行其后的过程块,并且其后得过程块是顺序执行。不同的always之间是同时执行的。begin和end相当于C语言的{},表示always所管理的过程块是在其之间。<= 是verlog的赋值语句和=之间存在差异性。<= 是非阻塞赋值方式: 1)在语句块中,上面的语句所赋值的变量不能立即就为下面的语句所用; 2)块结束后才能完成这次赋值操作,而所赋的变量值是上次赋值得到的; 3)在编写可综合的时序逻辑模块时,这时最常用的赋值方法。 4)非阻塞赋值符号和小于等于看起来一样,但意义完全不同,小于等于的关系运算符,用于比较大小,而非阻塞赋值符用于赋值操作。= 阻塞赋值符: 1)赋值语句执行完后,块才结束。 2)被赋变量的值在赋值语句结束后立刻就改变。 3)在时序逻辑中使用时,可能会产生意想不到的结果。阻塞和非阻塞时Verilog中的重点也是难点内容,之后在仔细理解。assign 是用来声明语句,进行逻辑定义;我的理解是:input和poutput 是wire类型,assign是对wire线连接到的数据进行声明。我的程序是定义一个28bit 的寄存器 timer,时钟信号的频率是25MHz ,每个时钟的上升沿会对timer进行加一,当大于0xEFFFFFF时置零,形成一个循环的时钟周期。然后把LED挂在timer的第26bit,即需要33554432x0.04 = 1342177.28us = 1.342s 点亮LED,然后亮1.324s。以此循环。
阅读全文
0 0
- 第二节 LED程序分析
- S3C6410 LED裸机程序分析
- 2440裸机程序分析之led
- Cortex A8 LED 点亮程序分析
- led驱动程序和test程序分析
- s3c2440- led驱动分析及其测试程序
- 词法分析之LED文件生成程序【调试中......】
- mini2440之首个C程序点亮LED分析
- 1.点亮1个led程序分析(汇编)
- 1.点亮1个led程序分析(C语言)
- 基于Cortex-A8裸机,点亮LED灯程序分析
- 基于mini2440的裸机led程序及其链接脚本分析
- platform之led驱动分析及测试程序
- 第二节:delay()延时实现LED灯的闪烁。
- 《tiny6410裸机程序》第二章:LED跑马灯RVDS精简main.c说明
- 第二篇 点亮led灯
- UT6410 linux led程序
- LED裸机程序(IAR)
- Linux变量总结
- HTML5移动端开发的常用触摸事件
- Java:封装案例(下)
- 准备在这里记录一下学习计算物理和数学建模的过程
- 回调函数理解
- 第二节 LED程序分析
- spring给bean注入属性的三种方式
- MySql学习记录1-mysql的基本操作之增删改
- C++重要知识点查阅
- Web Service (009---webservice请求流程分析)
- 第三周项目2-建设“顺序表”算法库 补1
- 高可用Docker容器云在58集团的实践
- 1006. 换个格式输出整数 (15)
- 用python做量化投资系列之比特币---布林带突破系统