2013年11月27日

[转载]关于generate用法的总结【Verilog】

摘要: 转载自http://www.cnblogs.com/nanoty/archive/2012/11/13/2768933.htmlAbtract generate语句允许细化时间(Elaboration-time)的选取或者某些语句的重复。这些语句可以包括模块实例引用的语句、连续赋值语句、always语句、initial语句和门级实例引用语句等。细化时间是指仿真开始前的一个阶段,此时所有的设计模块已经被链接到一起,并完成层次的引用。Introduction1.generate语法定义genvar,作为generate种的循环变量。generate语句中定义的for语句,必须要有begin,为后续 阅读全文

posted @ 2013-11-27 11:03 逆转骑士 阅读(42327) 评论(0) 推荐(4) 编辑

2013年11月21日

vim 正则表达式 很强大

摘要: 转自博客http://qianjigui.javaeye.com/blog/368449毋庸多言,在vim中正则表达式得到了十分广泛的应用。 最常用的 / 和 :s 命令中,正则表达式都是不可或缺的。 下面对vim中的正则表达式的一些难点进行说明。关于magicvim中有个magic的设定。设定方法为::set magic " 设置magic :set nomagic " 取消magic :h magic " 查看帮助vim毕竟是个编辑器,正则表达式中包含的大量元字符如果原封不动地引用(像perl 那样), 势必会给不懂正则表达式的人造成麻烦,比如 /foo(1) 阅读全文

posted @ 2013-11-21 10:14 逆转骑士 阅读(846) 评论(0) 推荐(1) 编辑

2013年6月25日

DDR3 write leveling

摘要: DDR3 由于采取了fly by的结构,导致DQS和CK信号之间在DIMM条上存在一定延迟。Write leveling就是用来调节DQS,CK在DIMM条上之间的相位关系使之满足tDQSS(注意这里的tDQSS是DDR3颗粒的时序要求)Wrtie leveling是一个完全自动的过程,只要控制器支持write leveling就可以进行。CPU不停的发送不同时延的DQS信号,颗粒会通过输入的DQS来采样输入的CK信号,如果采样到的CK信号一直为低,则会将DQ保持为低电平来告知控制器tDQSS相位关系还未满足,如果发现在某个DQS到来时,采样到此时的CK电平发现了迁越(由之前的低跳变为高),则 阅读全文

posted @ 2013-06-25 15:55 逆转骑士 阅读(3193) 评论(0) 推荐(0) 编辑

2013年6月14日

verilog PLI 实例

摘要: 在testbench中可以通过PLI调用c/c++函数hello world示例:hello.c#include <stdio.h> void hello_call () { printf ("\nHello World\n");}hello.vmodule hello_pli (); initial begin $hello; #10 $finish;end endmodule如果使用vcs,则要添加tab文件以确定函数的关联hello.tab如下$hello call=hello_call acc+=rw:*编译运行命令为:vcs -R -P hell... 阅读全文

posted @ 2013-06-14 15:33 逆转骑士 阅读(664) 评论(0) 推荐(0) 编辑

verilog 字符串

摘要: 3.4.3字符串常量 字符串是双引号内的字符序列,用一串8位二进制ASCⅡ码的形式表示,每一个8位二进制ASCⅡ码代表一个字符。例如:字符串“ab”等价于16'h5758。如果字符串被用作Verilog表达式或复制语句的操作数,则字符串被看做无符号整数序列。1.字符串变量声明 字符串变量是寄存器型变量,它具有与字符串的字符数乘以8相等的位宽。 【例3.13】字符串变量的声明。 存储12个字符的字符串“Hello China!”需要8*12(即96位)宽的寄存器。 reg [8*12:1] str1; initial begin str =“Hello China!”; end 2.字符 阅读全文

posted @ 2013-06-14 09:39 逆转骑士 阅读(12894) 评论(0) 推荐(0) 编辑

2013年6月13日

verilog 局部变量

摘要: verilog中使用局部变量要对相应的begin-end语句块起块名,如下initialbegin:block1 integer i;endinitialbegin:block2 integer i;end 阅读全文

posted @ 2013-06-13 15:56 逆转骑士 阅读(636) 评论(0) 推荐(0) 编辑

verilog同时输出到文件和屏幕

摘要: 要想同时输出到屏幕只要将打开文件得到的fd的最低位置1即可integer fd;initialbegin fd = $fopen("log.txt"); fd = fd | 32'b1; $fwrite(fd,"hello\n");end 阅读全文

posted @ 2013-06-13 15:35 逆转骑士 阅读(657) 评论(0) 推荐(0) 编辑

verilog event 用法

摘要: 在testbench中,可以使用event变量触发事件。event变量声明为:event var;event触发为:->var;捕获触发为:@(var);实例代码如下:event reset_trigger;event reset_done_trigger;initial begin forever begin @(reset_trigger); @(negedge clk); reset = 1; @(negedge clk); reset = 0; -> reset_done_trigger; endendinitialbegin : TEST_CASE #10 -> r 阅读全文

posted @ 2013-06-13 15:17 逆转骑士 阅读(7080) 评论(0) 推荐(0) 编辑

导航