首页 > 代码库 > RX232串口发送
RX232串口发送
在进行工程调试的时候有时候需要对变量进行观察,SingnaTap II Logic Analyzer 只能对管脚进行观察,所以要观察内部的变量必须把内部的变量进行输出。一种方法是直接把变量定义成管脚通过signaltap II观察,一种是用显示器显示,另外一种是通过串口进行观察。本文主要写了串口发送的一些代码。
时序图:
起始位0 数据8bit 结束位1 一共10bit
输入50MHz通过megawizard 生成9600Hz比例系数为3/15625;
代码如下:
module RX232_IN(input clk_50,input [7:0] datain,output reg TX,input EN,output reg endtck,output clkout);wire clk9600;reg [7:0] temp1;reg [7:0] temp;reg [3:0] count=0;reg[1:0] num=0;alt_9600 M0(clk_50,clk9600);assign clkout=clk9600;always@(posedge clk9600)begin endtck<=1; case(num) 0:begin if(EN &endtck) begin num<=1;temp<=datain;end else num<=0; end 1:begin TX<=0;num<=2;temp1<=temp;end 2:begin count<=count+1;if(count<8) begin temp1<=temp1>>1;TX<=temp1[0];num<=2;end else begin endtck<=0;count<=0; num<=3;end end 3:begin TX<=1;endtck<=1;num<=0;end endcaseend endmodule
验证代码:
module RX232(input clk_50,output TX,input EN,output endtck,output clk);wire [7:0] datain;assign datain=8‘haa;RX232_IN M0(clk_50,datain,TX,EN,endtck,clk);endmodule
`timescale 1ns/1nsmodule testbench();reg clk_50;reg EN;wire endtck;wire TX;RX232 M0(.clk_50(clk_50),.TX(TX),.EN(EN),.endtck(endtck));initial begin clk_50=0;EN=0;#39 EN=1;end always begin #10 clk_50=!clk_50;end endmodule
RX232串口发送
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。