随笔分类 -  verilog

摘要:完整uart发送与接收模块以后,为了便于测试我把发送模块连接在了一起进行测试,接收到的数据SRX_I是以16倍波特率的方式即(CLK_1)传入uart_rx,我用16倍的频率CLK_16进行采样,然后每8位data输出到到uart_tx,然后通过tuart_tx把data中的数据依次输出即STX_O,但是我们STX_O的输出是以CLK_16为时钟的这样只是为了便于简单,不用再考虑这两个module... 阅读全文
posted @ 2009-01-05 21:53 changlongbaobao 阅读(351) 评论(0) 推荐(0)
摘要:在此接受模块中,我们用的是16倍采样频率,每次都是在发送数据的中间采样,这样能保证采集到数据的正确性与完整性,而且设计了起始位采样同步计数器,采样数据同步计数器,更加保证采到的数据的正确性。才传送过程中,我们允许每8位的数据间有任意时间间隔,采用低起始位和高截止位作为标志。仿真波形如下:模块代码如下:[代码]testbench代码如下:[代码] 阅读全文
posted @ 2009-01-05 18:23 changlongbaobao 阅读(1476) 评论(4) 推荐(0)
摘要:在verilog中我们通常时间精度用(例)timescale 1ns/10ps 其中1ns指的是单位时间,10ps指的是时间精度。这些时间的定义都是作为软件工具的指令。 在system verilog中我们一般用timeunit表示单位时间,用timeprecision表示时间精度。我们可以在局部定义这些时间,作为程序,接口,模块的一部分。而不是作为软件工具的指令。如:module adder(.... 阅读全文
posted @ 2009-01-05 15:33 changlongbaobao 阅读(760) 评论(0) 推荐(0)
摘要:我们可以发送任意八位数据din,din之间可以间隔任何时间,只要模块接受到新的din数据,就会以固定的频率一个接一个的将数据发出。仿真波形如下:[代码][代码] 阅读全文
posted @ 2008-12-27 01:53 changlongbaobao 阅读(333) 评论(0) 推荐(0)
摘要:闲来之余,写了个加法树乘法器的小程序,此乘法器的最大特点是通过增加资源而提高运行速度,使两八位数相乘能够在一个周期中完成。[代码]完整代码及testbenchmult.rar 阅读全文
posted @ 2008-12-21 00:12 changlongbaobao 阅读(768) 评论(0) 推荐(0)
摘要:本设计是同步FIFO,但我的ram使用了双端口的异步ram,为什么要使用双端口呢?是不是太浪费资源了?其实不然,之所以用双端口的ram,主要原因是同时进行读写数据时,两个端口互不影响,能同时进行,解决了并发的问题。我们设计的不是同步FIFO吗?为什么要用异步ram呢?是不是成了异步FIFO?当然不是,当然是同步FIFO,因为我们的syn_fifo模块中只有一个clk,其实子模块可以理所当然的用同步... 阅读全文
posted @ 2008-12-20 00:13 changlongbaobao 阅读(1749) 评论(11) 推荐(0)
摘要:1.逻辑操作符&&,||,! eg: a=4'b0101 b=4'b0110 a||b结果为1 a&&b结果为1 2.按位运算符~,&,|,^,~^,^~ eg: a=4'b0101 b=4'b0110 a|b结果为0111 a&b结果为0100 a^b结果为0011 3.归约运算符&,~&,|,~|,^,~^ eg: a=4'b0101 b=4'b0110 |b结果为... 阅读全文
posted @ 2008-12-04 00:10 changlongbaobao 阅读(758) 评论(0) 推荐(0)