1、将以太网的数据由4bit转换为8bit的目的是什么?
答:以1个字节处理数据更简单明了。
上述模块的分析:当第一个时钟上升沿到来时,SW、VAL为0,此时开始顺序执行。
(1)将SW的0赋值给VAL;
(2)SW取反变为1;
(3)将这个上升沿前面的4bit数据赋值给rx_data低4位。
模块结束。
当第二个时钟上升沿到来时,SW为1、VAL为0,开始顺序执行。
(1)将SW的1赋值给VAL;
(2)SW取反变为0;
(3)将这个上升沿前面的4bit数据赋值给rx_data高4位。
2、上述模块的时序图分析
(1)rx_dv在rx_clk的上升沿变化(真实环境中应略落后于时钟上升沿一点点)
(2)在rx_dv有效时,eth_rx_data发生变化(真实环境中应略落后于rx_dv一点点)
(3)SW以rx_dv为条件。因此它的变化落后于rx_dv1个周期
(4)SW将时钟上升沿前的数据赋值给VAL(val落后于sw半个周期)
(5)SW变为1的时候将这个上升沿前的数据放入低位(变为1在下个周期有效,此时仍为0)
(4)SW先将1赋给VAL,再将数据放入高位(有这么一个顺序,但是时序中是体现不出来的)
3、注:
上述分析时的先后顺序仅可供思考时使用,实际情况应是:always块及begin-end语句内代码顺序执行,多个非阻塞赋值在一起时,它们同时执行,并在块语句结束时更新左边的值。