原创 [ZZ]RS232发送的代码

2007-7-19 17:45 4618 10 11 分类: FPGA/CPLD
verilog 中 数据发送的描述和应用!, 本人的实战代码~


这是本人用FPGA做RS232发送的代码一部分:
目的是想将一下数据发送的verilog代码怎么样描述比较贴近底层
和高效率的运行,虽然没有用上经典FPGA原则:(乒乓操作,PIPLING)
但是有一定的借鉴作用:


一般的RS232的通信是9600bps 10 bit ——1 bit begin ,1 bit end ,and
8bit data ;
if we use 11.0592MHZ(便于和51单片机通信)
我们将分频 11.0592M/9600=1152

分频部分省略:
这里只说主要参数和设计原则,
output out;
reg start_flag; // start_flag
reg [7:0] uart_buf; // send buffer;
reg txd_reg ;// txd register;
reg [3:0] bit_count // bit which send counter

always@(posedge clock) //clock 为分频后的时钟!
begin
if(start_flag||bit_count<4'd10)//因为我们要保证发送的数据只有10位
bit_count=bit_count+1;//而且如果没有发送完要继续发送
else bit_count=0; //如果要加入可调 波特率,可以自己设计

case(bit_count)
4'h0:txd_reg= 0;
4'h1:txd_reg= uart_buf[0]
4'h2:txd_reg= uart_buf[1];
4'h3:txd_reg= uart_buf[2];
4'h4:txd_reg= uart_buf[3];
4'h5:txd_reg= uart_buf[4]
4'h6:txd_reg= uart_buf[5];
4'h7:txd_reg= uart_buf[6];
4'h8:txd_reg= uart_buf[7];
4'h9:txd_reg= 1;
default: txd_reg=1;
endcase
end

assign out="txd"_reg;

好了,这是代码,我来说一下设计思想,
对于要用到数据传输的系统中,这种设计思想是必备的;
比如有串数据在buffer[20]中,用C语言来写
可能是这样的:
for(i=0;i<20;i++)
send=buffer;

但是这种写法在硬件描述语言中虽然是正确的但不符合
做FPGA的原则:面积与速度;这段代码在这两个方面上
都没有符合要求;
所以

我们要有一个硬件的设计思想
就是设计一个计数器COUNTER这个计数器,的个数是你要发送的数据个数
也可以设计成可调的,
然后用CASE。。。。。ENDCASE语句来扑捉这个COUNTER
对于不同COUNTER 发送不同的数据位,输出可以是并行的也可以是串行的!
如果加上乒乓操作,数据传输的将更快,再加上IP复用面积就更小了!
好了,本人愚作,谢谢欣赏!

文章评论1条评论)

登录后参与讨论

用户133301 2008-3-15 18:55

你能不能把<>这篇文章完整的发给我!我的邮箱是xuxuehui_1@163.com 关键是代码要全!谢谢了哈
相关推荐阅读
用户478270 2007-11-26 15:03
Visual C++中使用gotoxy() / clrscr()等函数
#include < windows.h >void clrscr(void);void clreol(void);void clreoscr(void);void gotoxy(int ...
用户478270 2007-11-15 11:38
putchar()、getch()、getche()和getchar()函数
getch()、getche()和getchar()函数     (1) getch()和getche()函数     这两个函数都是从键盘上读入一个字符。其调用格式为:      getch(); ...
用户478270 2007-11-06 21:10
VM TOOLS安装
以ROOT身份进入Redhat linux9.0以后,会发现我们并没有真正的安装上了VMWARE TOOLS软件包,这个时候需要点击“虚拟”--》“安装虚拟工具”, mount /dev/cdrom ...
用户478270 2007-11-03 16:49
用全加器实现逻辑函数
瑞芯微电子的一道笔试题f(x1,x2,x3) = E(0,2,3,5,6,7) 试用全加器实现。 在网上搜到一篇论文讲的挺全,上传共享。但还是有点没看明白,感觉技巧性太强。...
用户478270 2007-10-18 23:01
Latchup现象和预防措施
Latch up 最易产生在易受外部干扰的I/O电路处, 也偶尔发生在内部电路Latch up 是指cmos晶片中, 在电源power VDD和地线GND(VSS)之间由于寄生的PNP和NPN双极性B...
用户478270 2007-10-18 16:42
N沟道增强型MOS管的工作原理
N沟道增强型MOS管的工作原理1.vGS对iD及沟道的控制作用<?XML:NAMESPACE PREFIX = V /><?XML:NAMESPACE PREFIX = O />...
我要评论
1
10
关闭 站长推荐上一条 /2 下一条