1.Verilog中如果wire连接到常量,而常量没有说明他的位宽,那么将会默认为32位 如: input [:] x ; wire [:] a; assign a = + x; 上述代码在综合的时候,会将a扩展成32位进行操作,而事先声明常量位宽将不会出现,如下: input [:] x ; wire [:] a; assign a = d’3 + x; 这一点看起来没什么大不了的,但是有时候却会出现我们想的不一样的结果,请看下面的代码: input [ : ] x; output [ : ]…
前面我写了:谈谈html中一些比较"偏门"的知识,现在这篇(主要)想谈谈个人所见的CSS一些小知识点,加深印象:同时也希望有需要的人能有收获! 1.常见的浏览器内核: 以IE为代表:IE,MaxThon,TT,the World,360,搜狗浏览器等-----Trident内核[又称MSHTML] Firefox,Netscape 6及以上版本,seaMonkey等-----Gecko内核 Opera7及以上----- Opera内核原为:Presto,现为:Blink; Webkit…
类型转换 verilog中,任何类型的任何数值都用来给任何类型赋值.verilog使用赋值语句自动将一种类型的数值转换为另一种类型. 例如,当一个wire类型赋值给一个reg类型的变量时,wire类型的数值(包括四态数值,电平强度,多驱动解析)自动转换为reg类型(有4态数值,但没有电平强度和多驱动解析). 如果一个real类型被赋值给一个reg类型的变量,浮点数值自动截取为reg字长能够表达的整型数值. 下面这个例子里面,使用临时变量将一个浮点类型结果转换为一个64比特整型值,然后将这个整型值…
always语句包括的所有行为语句构成了一个always语句块.该always语句块从仿真0时刻开始执行其中的行为语句:最后一条执行完成后,再开始执行其中的第一条语句,如此往复循环,直到整个仿真结束.因此,always语句块常用于对数字电路中一组反复执行的活动进行建模.比如大家熟知的时间信号发生,每半个时钟周期时钟信号翻转一次. always @(posedge clock) begin ...... end 这就是条件循环语句了. 下面是今天做个一个小例子,4-2线编码器: 给出激励文件: `…
在C语言中,经常用到for循环语句,但在硬件描述语言中for语句的使用较C语言等软件描述语言有较大的区别. 在Verilog中除了在Testbench(仿真测试激励)中使用for循环语句外,在Testbench中for语句在生成激励信号等方面使用较普遍,但在RTL级编码中却很少使用for循环语句.主要原因就是for循环会被综合器展开为所有变量情况的执行语句,每个变量独立占用寄存器资源,每条执行语句并不能有效地复用硬件逻辑资源,造成巨大的资源浪费.简单的说就是:for语句循环几次,就是将相同的电路…
verilog中的有符号数运算 http://hi.baidu.com/lixu1113/item/d00dc095f86aed48f142159a verilog中的有符号数运算 有符号数的计算:若有需要关于有号数的计算,应当利用Verilog 2001所提供的signed及$signed()机制. Ex: input  signed [7:0] a, b; output  signed [15:0] o; assign o = a * b; or input   [7:0] a, b; ou…
$display(p1,p2, …,pn); $write(p1,p2, …,pn); 这两个函数和系统任务的作用都是用来输出信息,即将参数p2到pn按参数p1给定的格式输出.参数p1通常称为:“格式控制”,参数p2至pn通常称为“输出列表”. $display自动地在输出后进行换行,$write则不是这样.如果想在一行里输出多个信息,可以使用$write.如:$display(“%d”,10) 和 $display(“%d\n”,10) 效果相同 在$display和$write中,其输出格式…
Verilog中的有符号计数,一般是自己定义的而不是像C语言之类的定义一个有符号变量就好了.所以,要想在FPGA的世界里随心所欲的进行有符号运算,必须先对补码有一个很好的认知,然后再注意Verilog中编程的几个特性,两者缺一不可. 对补码初步的认识: 1.正数的补码与源码相同,即正数的补码是其本身. 2.负数的补码,是对其源码(除符号位)取反再加一,于是得到其补码. 3.对负数的补码(除符号位)取反再加一,于是得到其源码. 4.正数的补码被定义为其本身,所以不需以上操作.(其实你也可以理解为正…
习惯了自己发现一些小问题,既然发现了,就记下来吧,不然又要忘了,这是多么悲痛的领悟. 今天在用vivado进行块设计时所生成的顶层模块居然是用VHDL语言描述的,这时郁闷了,表示只看过VHDL语法但没写过.暂且不说VHDL模块的内容,我应该如何在测试平台中例化它并对它进行测试呢?稍微查了一下,其实很简单,只要把VHDL中的组件名.端口统统拿出来,按照verilog模块的例化形式就可以了.下面举个简单的例子来说明如何在verilog模块中例化VHDL模块. 2选1多路复用器的VHDL描述: ent…
verilog中的有符号数运算 有符号数的计算:若有需要关于有号数的计算,应当利用Verilog 2001所提供的signed及$signed()机制. Ex: input  signed [7:0] a, b; output  signed [15:0] o; assign o = a * b; or input   [7:0] a, b; output   [15:0] o; wire signed [15:0] o_sgn; assisn o_sgn = $signed(a) * $sig…