当前位置: 首页 > news >正文

zynq基础--verilog简易规则

 命名规则

verilog 中文件及内容模块的命名方式也是依据面向对象的思想命名。

类型命名方式实例
顶层文件对象+功能+topvideo_oneline_top
逻辑控制文件对象+ctrddr_ctr.v
驱动程序对象+功能+dri

lcd_dri.v

uart_rxd_dri.v

参数文件对象+para

lcd_para.v

模块接口

文件名+u

特征名+文件名+u

lcd_dir

lcd_dir_u(......)

mcb_read

c3_mcb_read_u

 

端口注释

对象+通道+方向

input video_vs_i

时钟信号

对象+功能+特征

phy_txclk_i

sys_50mhz_i

复位信号

对象+功能+极性+特性

phy_rst_n_i

sys_rst_n_i

延迟信号

对象+功能+特性1+特性2

fram_sync_i_r0

特性功能计数

对象(+功能)(+对象)+cnt

line_cnt

rd_cnt

mem_wr_cnt

video_line_cnt

一般计数器

cnt+序号

cnt0

时许同步信号

对象+功能+特性

line_sync_i

使能信号

(对象)+功能+en

wr_en

fifo_wr_en

 

关键字

input

设置一个输入信号,如同单片机设置引脚为输入状态一样,只能读,不能写。

 

output

设置一个输出信号。

 

inout

设置双向信号,即可写也可读。

 

wire

线信号,用于连接单元。

 

reg

寄存器,以位为基本单位存储,可以设置多位。

例如:

reg [1:0] state;//state存储两位

结构

代码块

begin

...

end

与C的大括号用法一样

模块

module [模块名称](输入输出参数)

........

endmodule

模块内部写代码

敏感信号

always@(...) 

begin

 

end

当括号内的信号满足触发时,才执行语句块的内容。

比如:always@(posedge clk)代表clk信号为上升沿时,则执行语句块内容。

分配

assign用于wire类连线,将表达式右边的电路连接到左边,左边随右边变化。

比如:

wire a,b,y;

assign y = a & b;

判断

if(...)

begin

...

end

 

if(....)

begin

...

end

else if(...)

begin

end

 

case(...)

....

endcase

符号

verilog大部分符号与C是一样的用法,下面仅说明不同部分。

非阻塞赋值

A <= 1'b1;

非阻塞赋值是同时的,而阻塞赋值时有先后顺序的。

比如:

A <= 1'b1;

B <= 1'b1;

代表同时给A和B赋值

A = 1'b1;

B <= 1'b1;

代表先给A赋值再给B赋值

冒号

用于数组、条件运算、case结构中。

例如:

reg[3:0]led;

代表名为led的reg类型数组,有4个元素。

拼接符

{a,b}代表将括号内的a和b按位并在一起。

例如:{1001,1110}拼接结果为10011110

参数

常量

parameter a = 0;

定义一个名为a的常数,数值为0,占用长度为32位。

对于不同位数使用如下格式:

[wide]'[d/h/b][val];

例如:

parameter a = 8'd180;//8位十进制数,值为180

parameter a = 8'haa;//8位十六进制数,值为aa

parameter a = 8'b1010_1010;//8位二进制数,值为10101010,其中"_",仅仅为了便于观察,可有可无。

预处理

verilog预处理与C很类似,预处理符号使用"`"开头.

注意:

在引用已定义的宏名时,必须在宏名前加上"`"。

例如:

`include file.v  //包含文件file.v

`define  X 1    //定义宏x 值为1

`ifdef X

  z = 1;

`else

  z = 0;

`endif

 

转载于:https://www.cnblogs.com/KcMeterCEC/p/5691679.html

相关文章:

  • 算法学习总结(二):选择排序
  • POJ - 1287 Networking
  • 【iOS】Jenkins Gitlab持续集成打包平台搭建
  • MySQL性能优化的最佳21条经验【转载】
  • 游戏引擎
  • Python的pip安装
  • 电Call记录统计查询sql
  • 数组操作
  • input输入类型
  • 连接优化查询,按条件查询的时候,如何优化查询的时间
  • 如何使用Enum
  • PHP.ini中配置屏蔽错误信息显示和保存错误日志
  • 设计模式的学习
  • 仿苹果原生头部动画
  • gdb用法
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【5+】跨webview多页面 触发事件(二)
  • java8-模拟hadoop
  • JavaScript的使用你知道几种?(上)
  • k8s如何管理Pod
  • Linux后台研发超实用命令总结
  • mysql 数据库四种事务隔离级别
  • Phpstorm怎样批量删除空行?
  • Python爬虫--- 1.3 BS4库的解析器
  • React组件设计模式(一)
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • TypeScript迭代器
  • vuex 笔记整理
  • Windows Containers 大冒险: 容器网络
  • 开发基于以太坊智能合约的DApp
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 来,膜拜下android roadmap,强大的执行力
  • 前端技术周刊 2019-01-14:客户端存储
  • 前端面试总结(at, md)
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • !!Dom4j 学习笔记
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #微信小程序:微信小程序常见的配置传值
  • (13):Silverlight 2 数据与通信之WebRequest
  • (2)MFC+openGL单文档框架glFrame
  • (SpringBoot)第二章:Spring创建和使用
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)ssm高校实验室 毕业设计 800008
  • (六)vue-router+UI组件库
  • (免费分享)基于springboot,vue疗养中心管理系统
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .NET的数据绑定