资源说明:ACTEL FPGA上的Verilog程序实现了底层的串口程序,如果你用其他品牌的FPGA可以借鉴Source\Fusion_UART下的三个.V文件,实际使用只需要更改驶入时钟频率就行,代码没有用IP核,都是Verilog实现的,对初学者非常适合,如下部分代码。
always@(posedge clk)
begin
if(clk_equ)
begin
if(!StartF) //是否处于接收状态
begin
if(!RXD)
begin
count = 4'b0; //复位计数器
count_bit = 4'b0;
RI = 1'b0;
StartF = 1'b1;
end
else RI = 1'b1;
end
else
begin
count = count+1'b1; //位接收状态加1
if(count==4'd6)
bit_collect[0] = RXD; //数据采集
if(count==4'd7)
bit_collect[1] = RXD; //数据采集
if(count==4'd8)
begin
bit_collect[2] = RXD; //数据采集
UartBuff[count_bit] = bit4;
count_bit = count_bit+1'b1; //位计数器加1
if((count_bit==4'd1)&&(UartBuff[0]==1'b1)) //判断开始位是否为0
begin
StartF = 1'b0; //标志开始接收
end
RI = 1'b0; //中断标志位低
end
if(count_bit>4'd9) //检测是否接收结束
begin
RI = 1'b1; //中断标志为高标志转换结束
StartF = 1'b0;
end
end
end
end
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。