SystemVerilog学习笔记(3) ------ string(2)
作者:蓝水映像 日期:2008-12-24
string 所特有的几种操作符 ==, !=, >, <, >=, <= 和 C 中的字符串比较是一样的, 这6种操作符两边的量可以是 string, 或者是字符串文本.
连接操作
| {Str1, Str2, ..., StrN} |
连接操作可以将多个字符串连接起来, StrN 可以是 string 类型的变量, 也可是以字符串文本.
复制操作
| {multiplier{Str}} |
复制操作可以把一个字符串进行多次复制,并连接. multiplier 可是是常量, 也可是是变量, 但必须是整数. Str 可以是一个 string 类型的量, 也可是一个字符串文本, 甚至是一个整型的数. 要注意的是, 当 Str 是一个整数时, Str 会先按照整型隐式转换成 string 的方法进行转换, 然后再进行复制操作.例如:
| bit [11:0] bit_str= 12'h544; string b = {2{bit_str}}; // b is 32'h05440544, not 24'h544544 |
string 的一些常用的函数
| function int len() | 返回字符串的长度, 空字符串返回0. | |
| task putc(int i, byte c) | 设置第i 个字符为c, 和b[i] = c的效果一样. | |
| function byte getc(int i) | 返回第i个字符, 和 c = b[i] 的效果一样. | |
| function string toupper() | 小写字母转换成大写字母. | |
| function int compare(string s) | 和 C 中的 strcmp 的功能一样.大小写不敏感 | |
| function int icompare(string s) | 和 C 中的 strcmp 的功能一样.但大小写敏感 | |
| function string substr(int i, int j) | 返回第i到第j之间的子字符串 | |
| function integer atoi() function integer atohex() function integer atooct() function integer atobin() |
以十进制, 十六进制, 八进制或者二进制把字符串转换成整数. | |
| function real atoreal() | 字符串转换成实数. | |
|
task itoa(integer i) |
将十进制, 十六进制, 八进制或者二进制的整数转换成字符串. | |
| task realtoa(real r) | 将实数转换成字符串. |
SystemVerilog学习笔记(2) ------ string(1)
作者:蓝水映像 日期:2008-12-23
string 在 Verilog 中也有, 但是仅仅只是表现为一个8-bit整数倍的数组, 而在 SystemVerilog 中, string 是尺寸可变, 动态分配并且提供了很多操作字符串的方法的.
string的声名方法
| string variable_name [= initial_value]; |
variable_name 为变量名; initial_value 为初始值, 在声名时可有可无. 如果不给初始值, string 变量的默认初值为"", 即一个的空字符串. 例:
| string site_name = "blove_water"; |
string 中的字符可以通过下标的方式来访问. 例如:
| site_name[0] site_name[6] |
的值为 "b" 的值为 "w" |
string 中不能有 "\0", 所有的 "\0" 会被忽略掉. 例如:
| bit [27:0] i = 28'h0410042; string str = string'(i); $display("str = %s", str); |
得到的结果是: str = AB;
string 是以 8-bit 为单位的. 当整型转换为 string 时, 如果整型的宽度不是 8-bit 的整数陪, 则在整数的左边补零, 直到宽度为 8-bit 的整数陪. 例如:
| bit [11:0] b = 12’ha41; string s2 = string’(b); // sets s2 to 16’h0a41 |
Tags: SystemVerilog Verilog FPGA
图标练习--- 字符变图标
作者:蓝水映像 日期:2008-12-22
SystemVerilog学习笔记(1) ------ 整型
作者:蓝水映像 日期:2008-12-22
SystemVerilog中的整型数据可以看作是Verilog和C中整型数据的一种杂交, 因些看起来有些象Verilog也有些象C.
整型可分为基本整型和向量整型(直译的
).下面是IEEE1800中定义的.
| integer_type ::= integer_vector_type | integer_atom_type integer_atom_type ::= byte | shortint | int | longint | integer | time integer_vector_type ::= bit | logic | reg |
基本整型有: byte, shortint, int, longint, integer, time.
向量整型有: bit, logic, reg.
这些整型又为分2态和4态数据类型. 2态即'0', '1'. 4态是在2态的基础上增加了 'Z' 和 'X'. 不论是基本整型还是向量类整型, 它们之中都有2态和4态之分.详细内容可看下表:
| byte | 2 态 8-bit 整型, 相当于 C 中的 char | signed | |
| shortint | 2 态 16-bit 整型, 相当于 C 中的 short | signed | |
| int | 2 态 32-bit 整型, 相当于 C 中的 int | signed | |
| longint | 2 态 64-bit 整型 | signed | |
| integer | 4 态 32-bit 整型, Verilog 的数据类型 | signed | |
| time | 4 态 64-bit 整型, Verilog 的数据类型 | unsigned | |
| bit | 2 态向量类整型 | ||
| logic | 4 态向量类整型 | ||
| reg | 4 态向量类整型, Verilog 的数据类型 |
SystemVerilog 做为 Verilog 的扩展, 因此在 SystemVerilog 中这些数据类型仍可以使用. 在这些类型之中, int 和 integer 基本上可以看做一样, 只是一个是 2 态,一个是 4 态. (在能只用 2 态的情况下尽量用 int, 因为 2 态数据类型在仿真的过程中可以有更高的效率.) logic 和 reg 在 SystemVerilog 中是相等的, 因为 logic 在字面意义上能够更好的表示 4 态, 而不象 reg 给人感觉不清, 所以尽量的用 logic 代替 reg.
在 4 态类型转换为 2 态类型时, 'Z' 和 'X' 会转换为 '0'.
整型还为分有符号和无符号的.用关键字 signed 和 unsigned 表示. 在声名时一定要注意 SystemVerilog 和 C 的不同.
在 C 中声名一个整数的方法为:
unsigned int a;
而在 SystemVerilog 中声名的方法为:
int unsigned a;
Tags: SystemVerilog Verilog FPGA
把我的心带回去吧...
作者:蓝水映像 日期:2008-07-31
昨天晚上从健身房回来,和同事再一次谈起了回武汉的事。A君准备这个周末就回去,对B君问道:“有什么东西要我带回去吗?”,B君毫不犹豫的道:“把我的心带回去吧!”。
当时大家都笑了,笑得很大声。可是想一想,又有什么好笑的呢,只不过是真情流露而已。出门在外谁会没有牵绊呢?
想回家的不只他一个,谁都想回去。想见见父母,见见朋友。好久没有和家人一起吃顿饭,好久没有和好兄弟们一起聚一聚,好久没有。。。。。。
曾经听过这样一段话。“若您工作在外,以一年只回家一次计算,如果你的父母还能活30年,那么你们相见的次数最多是30次;如果你的父母还能活20年,那么你们相见的次数最多是20次;如果你的父母还能活10年,那么你们相见的次数最多是10次……数字是多么可怕而又真实。学业、事业故然重要,但与父母相处的日子更重要,不要总因为这样那样的理由或籍口而退迟回家多陪陪父母,小时候父母为我们请了多少假,为什么我们就不能请个假抽个空常回家看看?”
不过我们还是幸运的,至少一年不只回家一次。
我想也应该回家一趟了。
最近比较烦
作者:蓝水映像 日期:2008-07-28
以前设计的首页
作者:蓝水映像 日期:2008-07-10
归去来
作者:蓝水映像 日期:2008-07-05
从美国回来已经快一个月了,也再一次开始慢慢习惯深圳这座城市了。当然不是主动要去习惯的,因为这地方的确没有什么值得去习惯的。
相对于同样是IT产业发达的深圳和美国硅谷而言,两个地方环境反差真的是太大了。记得在去美国之前,同事和同学都还在开玩笑,说要跟他们寄几个洋妞回来,结果去了之后才发现,在那边路上基本上见不到几个人,而深圳则遍地都是两条腿的。至于深圳的公交就不用说了,从来没见过这烂的。不过庆幸的是,我去公司上班不用坐公交,只要两只脚,至少不用去挤车,当然人堵在人行天桥上走不了,则是经常的事了。
真的想不通,为什么这么多的人要往深圳跑(我是被逼无奈才来的),虽说这地方赚钱比其它地方容易,但用钱更容易,在这边想要存些钱还真不容易。就算好不容易存了点钱,到最后不是被偷了,就是被抢了。深圳给人的感觉就是:如果不犯罪,就活不下去。

















