仅对英特尔可见 — GUID: eis1414476978730
Ixiasoft
仅对英特尔可见 — GUID: eis1414476978730
Ixiasoft
4.3.12. 设计实例
要获得设计实例中的DCFIFO设置,请参考设计文件(dcfifo8x32.v)的参数设置。
以下部分包括单独仿真波形,以描述写入和读取控制逻辑分别从DCFIFO接收信号后如何生成控制信号。
- 二进制格式的信号值: reset, trclk, fifo_wrreq, fifo_wrfull
- 十六进制格式的信号值:rom_addr, rom_out, fifo_in

状态 | 描述 |
---|---|
IDLE | 达到10 ns之前,reset信号为高电平,并使写控制器处于IDLE状态。IDLE状态下,写控制器将fifo_wrreq信号驱动为低电平,并请求从rom_addr=00读取数据。配置ROM,使其具有一个未寄存的输出,从而使rom_out信号立即显示rom_addr信号的数据,无论复位与否。由于rom_out信号直接连接到fifo_in信号(此信号是DCFIFO中已寄存器的输入端口),因此缩短了延迟。在这种情况下,数据 (0000000000000000000000000000000000000000000000000000000000000001)始终稳定并且当 fifo_wrreq信号在WRITE状态期间为高电平时有待写入DCFIFO。 |
WRITE | 如果复位信号解除置位后 fifo_wrfull信号为低电平,那么写控制器将从 IDLE状态转换为WRITE状态。在WRITE状态下,写控制器将fifo_wrreq信号驱动为高电平,并请求对DCFIFO进行写操作。数据通过DCFIFO中嵌入的ECC模块进行编码。rom_addr信号保持不变(00),因此在DCFIFO在下一个时钟上升沿实际写入数据之前,数据至少在一个时钟周期内保持稳定。 |
INCADR | 如果rom_addr信号尚未增加到ff(即,尚未从ROM读取最后一个数据),那么写控制器将从WRITE状态转换为INCADR状态。在INDADR状态下,写控制器将fifo_wrreq信号驱动为低电平,并将rom_addr信号增加1(00至01)。 |
- | 如果fifo_wrfull信号为低电平并且rom_addr信号尚未增加至ff ,则相同的状态转换将按照IDLE和WRITE状态所述继续进行。 |

状态 | 描述 |
---|---|
IDLE | 到达35 ns之前,读取控制器处于IDLE状态,因为fifo_rdempty信号为高电平,即使复位信号为低电平(波形中未显示)。IDLE状态下,ram_addr = ff以适应INCADR状态下的RAM地址递增,因而WRITE状态下将读取的第一个数据存储在ram_addr = 00中。 |
INCADR | 如果fifo_rdempty信号为低电平,那么读控制器将从IDLE状态转换为INCADR状态。在INCADR状态下,读取控制器将fifo_rdreq信号驱动为高电平,并请求DCFIFO进行读取操作。数据被解码,并且eccstatus将数据的状态显示为未检测到错误(00),检测到单一比特错误并已纠正(10)或不可纠正错误(11)。ram_addr信号以一递增(从ff到00),以便数据能够在ram_addr = 00写入RAM。 |
WRITE | 从INCADR状态开始,读取控制器总是在下一个时钟上升沿转换到WRITE状态。在WRITE状态下,它将ram_wren信号驱动为高电平,并将数据在ram_addr = 00写入RAM中。同时,读取控制器将ram_rden信号驱动为高电平,以便将新写入的数据作为下一个时钟上升沿在q处的输出。同样,它将word_count信号增加到1,以表明从DCFIFO成功读取的字数。 |
-- | 如果fifo_rdempty信号为低电平,那么继续相同的状态转换,如INCADR和WRITE状态所述。 |

状态 | 描述 |
---|---|
INCADR | 写控制器处于INCADR状态,并且fifo_wrfull信号置位时,写控制器将在下一个时钟上升沿转换为WAIT状态。 |
WAIT | 在WAIT状态下,写控制器保持rom_addr singal (08),以便在写控制器转换到WRITE状态时将相应的数据写入DCFIFO。 如果fifo_wrfull信号仍然为高电平,那么写控制器将保持在 WAIT状态。当fifo_wrfull为低电平时,写控制器总是在下一个时钟上升沿从WAIT状态转换为WRITE状态。 |
WRITE | 在WRITE状态下,写控制器将fifo_wrreq信号驱动为高电平,并请求写操作将数据从先前保存的地址(08)写入DCFIFO。如果rom_addr信号尚未增加到ff,那么它总是在下一个时钟上升沿转换到INCADR状态。 |
-- | 如果fifo_wrfull信号为高电平,那么继续相同的状态转换,如 INCADR, WAIT和WRITE状态所述。 |

状态 | 描述 |
---|---|
WRITE | 写控制器处于WRITE状态,并且rom_addr = ff时,写控制器将fifo_wrreq信号驱动为高电平,以请求对DCFIFO的最后写操作。数据100是ROM中存储的最后一个数据,并且要写入DCFIFO。在下一个时钟上升沿,写控制器将转换为DONE状态。 |
DONE | DONE状态下,写控制器将fifo_wrreq信号驱动为低电平。 |
-- | 由于接收域中的读控制器连续执行读取操作,因此fifo_wrfull信号解除置位。但是,fifo_wrfull信号仅在来自接收域的读取请求之后的某个时间解除置位。这是由于DCFIFO(rdreq信号到wrfull信号)中的延迟所导致。 |

fifo_rdempty信号置位以指示DCFIFO为空。读取控制器将fifo_rdreq信号驱动为低电平,并在ram_addr =ff上使能最后一个数据100的写操作。word_count信号增加到256(十进制),表示ROM中所有256个字的数据都已成功传输到RAM。
写入RAM的最后数据显示在q输出上。