[信息与通信]《CPLD FPGA串行通信》项目报告.doc
《[信息与通信]《CPLD FPGA串行通信》项目报告.doc》由会员分享,可在线阅读,更多相关《[信息与通信]《CPLD FPGA串行通信》项目报告.doc(31页珍藏版)》请在三一文库上搜索。
1、 串行通信接口项目报告学生信息(学生填写)班 级计应095日 期2011-05姓 名曾凡涛学 号0908143530计算机学院30一、项目目标 综合运用所学基本知识,通过在CPLD/FPGA开发板子完成按键响应、蜂鸣器蜂鸣、数码管显示以及其他项目所要达到的效果,最后在开发板上构建成一个全双工的串行通信接口。用户利用这个串行通信接口,可以与PC机或其它设备进行串行通信,并可以自主设置串行通信的数据格式和其他属性。二、项目设备1、硬件:PC机CPLD/FPGA开发板2、软件:WindowsXP/2000系统, Quartus II 7.2 (32-Bit)开发环境,comtools2.0。三、项目
2、内容1、串行通信接口项目,项目内容包括:(1)主模块设计;(2)显示模块设计;(3)时钟模块设计;(4)控制模块设计; (5)收发模块设计;(6)发送模块设计;(7)发送控制模块设计;(8)发送移位寄存器模块设计;(9)接收模块设计;(10)接收控制模块设计。2、设计一个基于CPLD/FPGA硬件平台的串口通信接口,项目的主要元素分为:(1) 在实验板上构成一个全双工的串行通信接口,用户利用这个串行接口,可以与PC机或其它设备进行串行通信,并可以设置串行通信的格式;(2) 系统的状态分成工作状态和设置状态:在工作状态下,进行串行通信;在设置状态下,进行通信格式的设置。(3) 该系统用5个数码管
3、(一个单独的数码管和一个4位数码管)显示串行通信的格式,比如串行通信的波特率是4800,7位数据位,校验方式为偶校验,则数码管显示为“E 48-7”。(4) 当系统处于工作状态时,如果收到串行数据,则把该数据显示在发光管上,如果接收到的数据有错误(包括奇偶校验错误和帧错误),则让蜂鸣器发出响声。3、串口通信接口实现的功能:(1) 在工作状态下,若用户按下K1按键,则把拨码开关上的数据发送出去。(2) 在工作状态下,如果用户按下K2按键,进入设置状态,首先设置进行校验方式的设置:这时单独的数码管闪烁显示,若用户按下K3按键可以改变校验方式(共有O、E、n三个取值)。(3) 在此过程中,如果用户再
4、次按下K2按键,可以进行波特率的设置:这时4位数码管的高两位闪烁,若用户按下K3按键可以改变波特率(共有96、48、24、12四个取值)。(4) 在此过程中,如果用户再次按下K2按键,可以改变数据位位数:这时4位数码管的(5) 最低位闪烁,用户按下K3按键可以改变数据位的位数(共有8、7、6、5四个取值)。(6) 在此过程中,如果用户再次按下K2按键,则系统又回到工作状态。四、项目设计根据设计要求,应把系统分成4个模块来完成,这四个模块分别是:时钟模块(向系统各部分提供各种频率的时钟信号)收发模块(进行串行通信的发送和接收)显示模块(显示通信的数据格式)控制模块(控制系统的工作)1. 程序各模
5、块的逻辑框图项目主模块的逻辑框图如下:2、各个模块逻辑框架图如下:时钟模块控制模块显示模块发送模块发送移位寄存器模块发送控制模块接收模块接收控制模块三、程序代码module mainmodule(k1,k2,k3,Hz24,sw,L4BitSel,L1Seg,L4Seg,Txd,Rxd,shineled,beep);input k1,k2,k3,Hz24,Rxd;input7:0sw;output7:0L1Seg,L4Seg,shineled;output3:0L4BitSel;output Txd,beep;wire enable;wire15:0 bcd;wire4:0 shine;wir
6、e Hz1,Hz50,Hz400,Hz1000,send,recv;wire1:0baud,chk,bits;Clk Clk(Hz24,baud,Hz1,Hz50,Hz400,Hz1000,recv,send); /时钟模块Ctrl Ctrl(k2,k3,Hz50,chk,baud,bits,bcd,shine,enable); /控制模块Show Show(bcd,Hz400,chk,shine,Hz1,L1Seg,L4Seg,L4BitSel);/显示模块Send Send(sw,k1,Hz50,enable,send,bits,chk,Txd); /发送模块Rev Rev(recv,Hz
7、1000,enable,bits,chk,Rxd,beep,shineled); /接收模块Endmodulemodule Clk(Hz24M,baud,Hz1,Hz50,Hz400,Hz1000,recv,send); /时钟模块input Hz24M;input 1:0 baud;output Hz1,Hz50,Hz400,Hz1000,send,recv;wire Hz28800,Hz14400,Hz7200,Hz3600,Hz9600,Hz4800,Hz2400,Hz1200;fenpin2 tfenpin1(Hz24M,Hz28800);fenpin3 tfenpin2(Hz24M,
8、Hz400);fenpin1 tfenpin3(Hz24M,Hz1000);onehalffenpin afenpin1(Hz28800,Hz14400);onehalffenpin afenpin2(Hz14400,Hz7200);onehalffenpin afenpin3(Hz7200,Hz3600);threefenpin threefenpin0(Hz28800,Hz9600);onehalffenpin afenpin4(Hz9600,Hz4800);onehalffenpin afenpin5(Hz4800,Hz2400);onehalffenpin afenpin6(Hz240
9、0,Hz1200);Datasel Datasel(Hz28800,Hz9600,Hz14400,Hz4800,Hz7200,Hz2400,Hz3600,Hz1200,baud,recv,send);eightfenpin ffenpin0(Hz400,Hz50);fiftyfenpin gfenpin0(Hz50,Hz1);endmodulemodule Datasel(d1,d2,d3,d4,addr,out);/数据选择器模块input1:0 d1,d2,d3,d4;input1:0 addr;output1:0 out;reg1:0 out;always(d1 or d2 or d3
10、or d4 or addr)case(addr)2b00:out=d1;2b01:out=d2;2b10:out=d3;2b11:out=d4;endcaseendmodule module threefenpin(clkin,clkout);/三分频input clkin;output clkout;reg1:0 Q; /寄存器always (negedge clkin)if(Q=2b10)Q=2b0;elseQ =Q+1b1;assign clkout=Q1;endmodulemodule fenpin1(clkin,clkout);/ 24MHz TO 1000Hzinput clkin
11、;output clkout;reg13:0 Q;reg clkout;always (negedge clkin)if(Q=14d12000-1)beginQ=14h0000;clkout=clkout;endelseQ=Q+1b1;endmodule module fenpin2(clkin,clkout);/ 24MHz TO 28800Hzinput clkin;output clkout;reg8:0 Q;reg clkout;always (negedge clkin)if(Q=9d416)beginQ=9h0000;clkout=clkout;endelseQ=Q+1b1;end
12、module module fenpin3(clkin,clkout);/ 24MHz TO 400Hzinput clkin;output clkout;reg14:0 Q; /计数器reg clkout;always (negedge clkin)if(Q=15d30000-1)beginQ=15h0000;clkout=clkout;endelseQ=Q+1b1;endmodule module eightfenpin(clkin,clkout);/八分频input clkin;output clkout;reg1:0 Q; /计数器reg clkout;always (negedge
13、clkin)if(Q=2d3)beginQ=2h0;clkout=clkout;endelseQ=Q+1b1;endmodule module onehalffenpin(clkin,clkout);/2分频input clkin;output clkout;reg clkout;always (negedge clkin)clkout=clkout;endmodule module fiftyfenpin(clkin,clkout);/50分频input clkin;output clkout;reg4:0 Q;/计数器reg clkout;always(negedge clkin)if(Q
14、=5d24)beginQ=5h0;clkout=clkout;endelseQ=Q+1b1;endmodule module Ctrl(k2,k3,Hz50,chk,baud,bits,bcd,shine,enable); /控制模块input k2,k3,Hz50;output enable;output1:0 chk,baud,bits;output15:0 bcd;output4:0 shine;wire k2out,k3out;wire1:0 sysmode;wire2:0 outk3;Filter filter1(k2,k3,Hz50,k2out,k3out);/去抖动Cntfour
15、 cntfour1(k2out,sysmode);/4计数器K3mux k3m(k3out,sysmode,outk3);/数据分配器Cntfour cntfour2(outk30,bits);/4计数器Cntfour cntfour3(outk31,baud);/4计数器Cntthree cntthree0(outk32,chk);/3计数器Shine shine0(sysmode,shine);/闪烁Bauddecoder bauddecoder0(baud,bcd15:8);/译码器波特率Bitsdecoder bitsdecoder0(bits,bcd3:0);/译码器-位assign
16、 bcd7:4=4b1111;assign enable=|sysmode;endmodule module Filter(D,clk,Q);/去抖input1:0 D;input clk;output1:0 Q;reg1:0 Q;always (negedge clk)Q=D;endmodule module Cntfour(clk,Q); /四进制计数input clk;output1:0 Q;reg1:0 Q;always(negedge clk)Q=Q+1b1;endmodulemodule Cntthree(clk,Q); / 三进制计数input clk;output1:0 Q;r
17、eg1:0 tmp;always(negedge clk)if(tmp=2b10)tmp=2b0;elsetmp=tmp+1b1;/tmp can be 00,01,10,assign Q=tmp+1b1;/Q can be 01,10,11endmodulemodule K3mux(in,addr,out); /数据分配器input in;input1:0 addr;output2:0 out;reg2:0 out;always(in or addr)case(addr)2b00: out=3b111;/zai gong zui2b01: out=in,2b11;2b10: out=1b1,
18、in,1b1;/set baud2b11: out=2b11,in;/set bitsendcaseendmodulemodule Shine(codein,codeout);/闪烁input1:0 codein;output4:0 codeout;reg4:0 codeout;always(codein)case(codein)2b00: codeout=5b00000;2b01: codeout=5b10000;2b10: codeout=5b01100;2b11: codeout=5b00001;endcaseendmodule module Bauddecoder(codein,cod
19、eout);/ 波特率译码器input1:0 codein;output7:0 codeout;reg7:0 codeout;always(codein)case(codein)2b00: codeout=8h96;2b01: codeout=8h48;2b10: codeout=8h24;2b11: codeout=8h12;endcaseendmodule module Bitsdecoder(codein,codeout);/数据位译码器input1:0 codein;output3:0 codeout;reg3:0 codeout;always(codein)case(codein)2
20、b00: codeout=4h8;2b01: codeout=4h7;2b10: codeout=4h6;2b11: codeout=4h5;endcaseendmodulemodule Show(L4bcd,Hz400,chk,shine,Hz1,L1Seg,L4Seg,L4BitSel); /显示模块input15:0L4bcd;input4:0shine;input1:0chk;input Hz1,Hz400;output7:0L1Seg,L4Seg;output3:0L4BitSel;wire7:0L1SegTmp;wire shine1;wire3:0 L4Shine,BitSelT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息与通信 CPLD FPGA串行通信 信息与通信CPLD FPGA串行通信项目报告 信息 通信 CPLD FPGA 串行 项目 报告
链接地址:https://www.31doc.com/p-1968566.html