verilog 语法篇
文章平均质量分 78
xiangyuqxq
这个作者很懒,什么都没留下…
展开
-
verilog仿真用的分层时间队列
翻译 2012-02-15 09:44:45 · 932 阅读 · 0 评论 -
状态机写法总结:非index与index写法
前几天在论坛上跟大家讨论了一下关于状态机风格写法的问题,应要求我今天在这里做一个简单的总结。 现在大家比较统一的观点是,状态机的写法应该是用三段式写法,即第一部分说明初始状态,current_state非index写法,这个大家都应该很熟悉了:module test2(clk,reset,ena,out1,out2,out3);input clk,reset,ena;out转载 2012-03-02 13:28:00 · 1163 阅读 · 0 评论 -
可重用设计--使用符号常量和parameter
可重用设计--使用符号常量和parameter好的设计习惯会在HDL代码中避免使用“魔鬼数字”,而是尽量采用符号常量。Verilog HDL中,使用关键字localparam声明符号常量4位全加器的Verilog HDL描述module adder_carry_hard_lit(input wire [3:0] a, b,output wire [3:0] su原创 2012-02-20 21:36:43 · 1096 阅读 · 0 评论 -
verilog 不可综合语句 总结 汇总
(1)所有综合工具都支持的结构:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,input,instantitation,module转载 2012-02-20 20:35:26 · 936 阅读 · 0 评论 -
关于一阶状态机跳转问题的研究与心得
转自:http://www.cnblogs.com/craftor/archive/2011/04/09/2010461.html简单来说,HDL的精髓就是if、case、FSM(有限状态机),而if、case通常又是伴随在状态机之中的。所以,状态机的重要性是毋庸置疑的。通常,在一个always或者process中,用到的都是一阶的状态机比较多,二阶以上的较复杂,代码可读性不高,所以不用常转载 2012-02-20 12:25:37 · 2037 阅读 · 0 评论 -
怎样在有限状态机中延时
本文借一小例,来示范在FSM中如何延时。 案例(1)fsm_with_delay_demo.v?12345678910111213141516171819202122转载 2012-02-19 11:59:03 · 2746 阅读 · 0 评论 -
系统任务
erilog为某些常用操作提供了标准的系统任务(也叫系统函数)这些操作包括屏幕显示、线网值动态监视、暂停和结束仿真等。所有的系统任务都具有$的形式。显示信息 $display(p1,p2,p3,…,pn); $display会自动在字符串的结尾处插入一个换行符,因此如果参数列表为空,则display的效果是现实光标移动到下一行 监视信息原创 2012-02-17 10:39:13 · 653 阅读 · 0 评论 -
Verilog HDL的编译预处理语句
一、宏定义'define语句包括宏定义指令包括:'define和'undef。类似于c中的#define声明语法格式:'define 在代码中的应用格式:'macro_name 例如: ‘define WORD_SIZE 32和parameter的区别:作用域不同:parameter作用于声明的那个文件。而'd转载 2012-02-15 09:16:37 · 2385 阅读 · 0 评论 -
Verilog的词法约定
Verilog的词法约定1 Verilog是大小写相关的,其中的关键字全部为小写。2 空白符由空格、制表符、和换行符组成。3 单行注释以“//”开始,verilog将忽略此处到行尾的内容。多行注释以“/*”开始,以“*/”结束。多行注释不允许嵌套4 操作符有三种:单目操作符、双目操作符和三目操作符。转载 2012-02-17 10:29:22 · 944 阅读 · 0 评论 -
always block內省略else所代表的电路
Abstract在Verilog中,always block可以用來代表Flip-Flop, Combination Logic與Latch,本文比較在不寫else下,always block所代表的電路。Introduction在C語言裡,省略else只是代表不處理而;已但在Verilog裡,省略else所代表的是不同的電路。always@(a or b or en)转载 2012-02-17 22:15:01 · 1157 阅读 · 0 评论 -
模块端口
模块模块的定义以关键字module开始,模块名、端口列表、端口声明和可选的参数声明必须出现在其他部分的前面,endmodule语句必须为模块的最后一条语句。端口是模块与外部环境交互的通道,只有在模块有端口的情况下才需要有端口列表和端口声明。模块内部的5个组成部分是:变量声明、数据流语句、低层模块实例、行为语句块以及任务和函数。 端口端口是模块与外界环境交互的接口。对外部环境来讲,模转载 2012-02-17 10:42:44 · 1624 阅读 · 0 评论 -
Verilog的数据类型
1 值的种类四值电平逻辑值的级别硬件电路中的条件0逻辑0,条件为假1逻辑1,条件为真X逻辑值不确定Z高阻,浮动状态除了逻辑值外,Verilog还是用强度值来解决数字电路中不同强度的驱动源之间的赋值转载 2012-02-17 10:34:33 · 1977 阅读 · 0 评论 -
Verilog HDL的任务和函数
任务和函数只能实现组合逻辑,而对时序逻辑无能为力。一、任务任务就是一段封装在“task…endtask”之间的程序。任务可以彼此调用,而且任务内还可以调用函数。1、任务定义形式如下: task task_id; // 任务名 [declaration] // 端口定义 procedural_statement // 任务转载 2012-02-15 09:23:38 · 792 阅读 · 0 评论 -
verilog的仿真参考模型
翻译 2012-02-15 09:49:08 · 1889 阅读 · 0 评论 -
verilog综合小结
一:基本Verilog中的变量有线网类型和寄存器类型。线网型变量综合成wire,而寄存器可能综合成WIRE,锁存器和触发器。二:verilog语句结构到门级的映射连续性赋值:assign连续性赋值语句逻辑结构上就是将等式右边的驱动左边的结点。因些连续性赋值的目标结点总是综合成由组合逻辑驱动的结点。Assign语句中的延时综合时都将忽视。过程性赋值:过程性赋值只出现在al转载 2012-02-13 19:56:07 · 2920 阅读 · 0 评论 -
Verilog-2001
1.Verilog-2001的由来 Verilog HDL 虽然得到了广泛应用,但是人们在应用过程中也发现了Verilog的不少缺陷。在2001年,OVI(Open Verilog Initiative)向IEEE提交了一个改善了用户觉得原始的Verilog-95标准缺陷的新的标准。这一扩展版本成为了IEEE1364-2001标准,也就是Verilog 2转载 2012-02-13 19:43:12 · 3002 阅读 · 0 评论 -
Verilog HDL语言的用户自定义元件
Verilog HDL语言提供了一种扩展基元的方法,允许用户自己定义元件(User Defined Primitives,UDP)。通过UDP,可以把一块组合逻辑电路或时序逻辑电路封装在一个UDP内,并把这个UDP作为一个基本门元件来使用。需要注意的是,UDP是不能综合的,只能用来仿真。1、定义UDP的语法:primitive 元件名(输出端口名, 输入端口名1, 输入端口名2,…转载 2012-02-15 09:20:12 · 1833 阅读 · 0 评论 -
Verilog HDL数据类型
Verilog HDL的数据类型分为两大类:线网类型和寄存器类型。线网类型主要表示Verilog HDL中结构化元件之间的物理连线,其数值由驱动元件决定。如果没有驱动元件接到线网上,则其默认值为高阻z。寄存器类型主要表示数据的存储单元,其默认值为不定x。二者最大的区别在于:寄存器类型数据保持最后一次的赋值,而线网类型数据则需要持续的驱动。 一、线网类型:wire:标准连线(转载 2012-02-15 09:32:26 · 1225 阅读 · 0 评论 -
signed与unsigned的问题
以前知道有signed与unsigned的区别,但是很少有真正地碰到过,所以没有什么真正地了解。这次在coding的时候终于碰到,写下来以后好看。错误的:module abs(clk,a,b,c); input clk; input [7:0] a; input [7:0] b; output reg转载 2012-03-18 08:41:29 · 1900 阅读 · 0 评论