阅读:1108回复:3
用过xilinx的spatanII的高手请进,给高分!
我使用verilog编写了一个输出的串行数据流,但是每过1Mbit就会出现一次错位,找不到原因,有没有高手帮忙解答。程序如下:
clkin为2.048M的时钟信号 t1e1icout为串行时钟输出 t1e1idout为串行数据输出 module Insertion( clkin,t1e1idout,t1e1icout ); // parallel to serial convertion prot declaration input clkin; output t1e1idout,t1e1icout; // parallel to serial convertion variable declaration reg[6:0] pbitcnt; reg sout; reg[99:0] testbuf; // parallel to serial convertion always @( negedge clkin ) begin sout = testbuf[pbitcnt]; pbitcnt = pbitcnt + 1; if( pbitcnt == 7\'b1100100 ) begin pbitcnt = 0; testbuf = 100\'b0000000000111111111100000000001111111111000000000011111111110000000000111111111100000000001111111111; end end assign t1e1icout = clkin; assign t1e1idout = sout; endmodule |
|
|
沙发#
发布于:2003-10-12 21:15
复位有问题:
改成: if( pbitcnt == 7\'b1100100 ) begin pbitcnt =1; ///////复位从1开始 |
|
板凳#
发布于:2003-10-12 22:39
always @( negedge clkin or clr )
begin if(!clr) begin pbitcnt <= 0; testbuf <= 100\'b0000000000111111111100000000001111111111000000000011111111110000000000111111111100000000001111111111; end else begin if(pbitcnt < 99) pbitcnt <= pbitcnt + 1; else pbitcnt <= 0; end end always@( negedge clkin) sout <= testbuf[pbitcnt]; 试一下,我没有仿真 [编辑 - 10/12/03 by atuhappy] |
|
|
地板#
发布于:2003-10-13 23:21
结果怎么样
|
|
|