摘要: 完整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 阅读(337) 评论(0) 推荐(0) 编辑
摘要: 在此接受模块中,我们用的是16倍采样频率,每次都是在发送数据的中间采样,这样能保证采集到数据的正确性与完整性,而且设计了起始位采样同步计数器,采样数据同步计数器,更加保证采到的数据的正确性。才传送过程中,我们允许每8位的数据间有任意时间间隔,采用低起始位和高截止位作为标志。仿真波形如下:模块代码如下:[代码]testbench代码如下:[代码] 阅读全文
posted @ 2009-01-05 18:23 changlongbaobao 阅读(1457) 评论(4) 推荐(0) 编辑
摘要: 仿真结果如下:p_start是验证从载入要发送的数据到发送低有效的起始位这段时间的时序是否正确,,p_shift是验证从准备好开始发送到发送过程中的数据的九次移位是否正确,p_state是跟踪发送过程中状态机的状态。具体代码如下:[代码]testbench如下:[代码]以上代码都已通过调试,调试环境为modelsim6.3f 阅读全文
posted @ 2009-01-05 17:36 changlongbaobao 阅读(941) 评论(0) 推荐(0) 编辑
摘要: 在verilog中我们通常时间精度用(例)timescale 1ns/10ps 其中1ns指的是单位时间,10ps指的是时间精度。这些时间的定义都是作为软件工具的指令。 在system verilog中我们一般用timeunit表示单位时间,用timeprecision表示时间精度。我们可以在局部定义这些时间,作为程序,接口,模块的一部分。而不是作为软件工具的指令。如:module adder(.... 阅读全文
posted @ 2009-01-05 15:33 changlongbaobao 阅读(711) 评论(0) 推荐(0) 编辑