| 大哥如果方便的话,能否下一次,找个板子把引脚改一下,就OK了.看看灯点的亮不,总觉得是QUARTUS II哪个地方设置的不对导致片子不工作啊 
 我在家调试,有万用表,就是没有示波器,悲催啊,但我分析时钟应该是有的,之前我下载了一个这样的程序,运行是正常的
 
 `include "gen_divd.v"
 `include "uart_x.v"
 
 module uart_x_top(
 Resetb,
 Clkin,
 Txd
 /*
 //test
 TxFinishTS,
 XmitPlus,
 TxClkTS,
 Cnt,
 TxData
 */
 );
 input Resetb,Clkin;
 output Txd;
 /*
 //test
 output TxFinishTS;
 output XmitPlus;
 output TxClkTS;
 output [1:0] Cnt;
 output [7:0] TxData;
 */
 reg XmitPlus;
 reg [7:0] TxData;
 reg [3:0] ByteCnt;
 reg [1:0] Cnt;
 
 wire TxFinish;
 wire TxClk;
 
 defparam Gen_TxClk.divdFACTOR=174,Gen_TxClk.divdWIDTH=7;//分频出115200的波特率
 gen_divd Gen_TxClk(.reset(Resetb),.clkin(Clkin),.clkout(TxClk));//端口名称关联
 
 uart_x UartTx(.Bclk(TxClk),.Resett(Resetb),.Txd(Txd),
 .XmitCmdp(XmitPlus),.TxdBuf(TxData),.TxDone(TxFinish));
 
 always @ (posedge Resetb or posedge TxClk )
 if(Resetb)
 begin
 ByteCnt<=4'd0;
 Cnt<=2'b0;
 XmitPlus<=0;
 end
 else//循环发送a-j,共10个字母
 begin
 Cnt<=Cnt+1'b1;
 case(Cnt)
 2'b00:
 begin
 XmitPlus<=1;
 TxData<=8'h61+ByteCnt;
 end
 2'b01:
 XmitPlus<=0;
 2'b10:
 begin
 if(TxFinish)
 begin
 Cnt<=2'b0;
 ByteCnt<=ByteCnt+1'b1;
 if(ByteCnt>=9)
 ByteCnt<=4'b0;
 end
 else
 Cnt<=2'b10;
 end
 endcase
 end
 /*
 assign TxFinishTS=TxFinish;
 assign TxClkTS=TxClk;
 */
 endmodule
 |