版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
instinst并行数据流转换为特殊串行数据流模块设计设计要求设计两个可综合的电路模块:第一个模块M1能把4位的并行数据转换为符合以下协议的串行码流,数据流用scl和sda两条线传输,scik为输入的时钟信号,data[3:0]为输入数据,ack为M1请求M0发送数据信号。第二个模块M2能把串行数据流内的信息接收到,并转换为相应 16条信号线的高电平,即若数据为1,则第一条信号线为高电平,数据为n,则第N=2n条信号线为高电平。总体的框图如下图所示:图1通信协议scl为不断输出的时钟信号,如果scl为高电平时,sda由高变低时刻,串行数据流开始;如果scl为高电平时,sda由低变高时刻,串行数据结束。sda信号的串行数据位必须在scl为低电平时变化,若为高则为1,否则为0。通信协议的波形如图2所示:sclsda 1/0 1/0 1/0 1/0图2M1模块设计模块功能:按照设计要求,把输入的4位并行数据转换为协议要求的串行数据流,并由scl和sda配合输出。思路分析:M1需要产生M2的时钟信号scl,考虑到M1时钟端所接为外部稳定时钟源,则scl信号应该可以通过sclk时钟信号分频产生。rst为异步复位端,便于在通电时将硬件电路复位到有效状态。 M1将接收到的并行数据转换为串行数据,需要先将并行数据存入寄存器中,在 sclk配合下,将并行数据转换为串行数据输出,同时再输出反馈信号ack到M0,所以设计的核心在于利用M1模块产生符合协议要求的sda信号和ack信号,以供M0模块和M2模块使用。sda信号的串行数据位必须在scl为低电平时变化,这是设计的关键所在。为了便于编写程序及调试,给出了如图3所示的时序逻辑状态转移图。3dr]—td•aa:0Li..J.HE流程图:设计中采用了同步状态机,利用状态跳转来使SCI、sdaack信号在同步性能上有明显提高,以保证时序的可靠性和准确性。link_sdalink_sda<=0ack<=1图3状态转移图程序代码如下:moduleptosda1(rst,sclk,ack,scl,sda,data);inputsclk,rst;input[3:0]data;outputack,scl,sda;regscl,link_sda,ack,sdabuf;reg[3:0]databuf;reg[7:0]state;assignsda=link_sda?sdabuf:1'b0;parameterready=8'b0000_0000,start=8'b0000_0001,bit1=8'b0000_0010,bit2=8'b0000_0100,bit3=8'b0000_1000,bit4=8'b0001_0000,bit5=8'b0010_0000,stop=8'b0100_0000,IDLE=8'b1000_0000;always@(posedgesclkornegedgerst)beginif(!rst)scl<=1;elsescl=~scl;endalways@(posedgeack)databuf<=data;always@(negedgesclkornegedgerst)beginif(!rst)beginlink_sda<=0;state<=ready;sdabuf<=1;ack<=0;endelsebegincase(state)ready:if(ack)beginlink_sda<=1;state<=start;endelsebeginlink_sda<=0;state<=ready;ack=1;endstart:if(scl&&ack)beginsdabuf<=0;state<=bit1;endelsestate<=start;bit1:if(!scl)beginsdabuf<=databuf[3];state<=bit2;ack<=0;endelsestate<=bit1;bit2:if(!scl)beginsdabuf<=databuf[2];state<=bit3;endelsestate<=bit2;bit3:if(!scl)beginsdabuf<=databuf[1];state<=bit4;endelsestate<=bit3;bit4:if(!scl)beginsdabuf<=databuf[0];state<=bit5;endelsestate<=bit4;bit5:if(!scl)beginsdabuf<=0;state<=stop;endelsestate<=bit5;stop:if(scl)beginsdabuf<=1;state<=IDLE;endelsestate<=stop;IDLE:if(scl)beginlink_sda<=0;state<=ready;endelsestate<=IDLE;default:beginlink_sda<=0;sdabuf<=1;state<=ready;endendcaseendendendmodule仿真波形为:组并行数据转换为串行数据输出后,databuf中的数据才更新。输出串行数据流的格式为OxxxxO,其中,xxxx是转换后得到的四位串行数据。而且串行数据的变化均在scl为低电平器件,数据的传输符合通信协议要求,达到设计要求。M2模块设计模块功能:按照协议接收串行数据,进行处理并按照数据值在相应位输出高电平。思路分析:scl为M2的输入时钟信号,sda为输入串行数据流,M2准确读出sda中的串行数据并进行处理,然后按照要求在相应位输出高电平。 输入串行数据流的格式为OxxxxO,因此正确的读出数据xxxx并转换为并行数据是设计的关键,同时按照协议要求,应该设置相应的串行数据开始标志 StartFlag和结束标志EndFlag,设置这样的标志是极其重要的,因为这样可以帮助我们正确的设计状态机,从而准确可靠的读出串行数据xxxx并转换为并行数据。最后将并行数据按指定要求输出,要求M2内部有译码模块。・:--■J■'' ouihiQh[l&..■Kiai-";■-■--■■>nti■■-“-*:i■rr•---■:in$ii--状态转移图:程序代码如下:moduleout16hi(scl,sda,outhigh,rst);inputscl,sda,rst;output[15:0]outhigh;reg[5:0]mstate;reg[3:0]pdata,pdatabuf;reg[15:0]outhigh;regStartFlag,EndFlag;always@(negedgesdaornegedgerst)beginif(scl)StartFlag<=~StartFlag;elseif(!rst)StartFlag<=0;endalways@(posedgesdaornegedgerst)beginif(scl)beginEndFlagv=~EndFlag;pdatabuf<=pdata;endelseif(!rst)EndFlag<=1;endparameterready=6'b00_0000,sbit0=6'b00_0001,sbit1=6'b00_0010,sbit2=6'b00_0100,sbit3=6'b00_1000,sbit4=6'b01_0000;always@(pdatabuf)begincase(pdatabuf)4'b0001:outhigh=16'b0000_0000_0000_0001;4'b0010:outhigh=16'b0000_0000_0000_0010;4'b0011:outhigh=16'b0000_0000_0000_0100;4'b0100:outhigh=16'b0000_0000_0000_1000;4'b0101:outhigh=16'b0000_0000_0001_0000;4'b0110:outhigh=16'b0000_0000_0010_0000;4'b0111:outhigh=16'b0000_0000_0100_0000;4'b1000:outhigh=16'b0000_0000_1000_0000;4'b1001:outhigh=16'b0000_0001_0000_0000;4'b1010:outhigh=16'b0000_0010_0000_0000;4'b1011:outhigh=16'b0000_0100_0000_0000;4'b1100:outhigh=16'b0000_1000_0000_0000;4'b1101:outhigh=16'b0001_0000_0000_0000;4'b1110:outhigh=16'b0010_0000_0000_0000;4'b1111:outhigh=16'b0100_0000_0000_0000;4'b0000:outhigh=16'b1000_0000_0000_0000;endcaseendalways@(posedgescl)beginif(StartFlag)case(mstate)ready:beginmstate<=sbit0;$display("Iaminready");endsbit0:beginmstate<=sbit1;pdata[3]<=sda;$display("Iaminsdabit0");endsbit1:beginmstate<=sbit2;pdata[2]<=sda;$display("Iaminsdabit1");endsbit2:beginmstate<=sbit3;pdata[1]<=sda;$display("Iaminsdabit2");endsbit3:begin
mstate<=sbit4;pdata[O]v=sda;$display("laminsdabit3");endsbit4:beginmstate<=ready;$display("Iaminready");enddefault:mstate<=ready;endcaseelsemstate<=sbit0;endendmodule仿真波形为:仿真结果表明:rst复位信号用于对数据开始标志 StartFlag仿真结果表明:rst复位信号用于对数据开始标志 StartFlag和数据结束标志EndFlag置初值,根据通信协议要求,数据传输开始于 sda下降沿,结束与sda上升沿,因此可以利用sda的上升沿来改变EndFlag的状态,sda的下降沿来改变StartFlag的状态,同时在sda的上升沿到来时将串行数据转换为并行数据并输出高电平。从图中可以看出,StartFlag为高电平有效,EndFlag为低电平有效,M2准确地从串行数据流内读出串行数据,如图中串行数据依次为0000,0001,…,与测试输入数据吻合,表明M2模块设计符合要求。M1与M2连接方式M0测试模块设计思路:由于M1模块有输出信号反馈到M0模块,并对M0模块产生影响,因此需要在M0模块中加入输入信号,用于接收M1模块的反馈信号。利用这个反馈信号编制相应的输出信号,这样能更好地仿真实际电路。代码:'timescale1ns/1ns'definehalfperiod50modulesigdata(rst,sclk,data,ask_for_data);outputrst,sclk;output[3:0]data;inputask_for_data;regrst,sclk;reg[3:0]data;initialbeginrst=1;#10rst=0;#('halfperiod*2+3)rst=1;endinitialbeginsclk=0;data=0;#('halfperiod*1000)$stop;endalways#('halfperiod)sclk=~sclk;always@(posedgeask_for_data)#('halfperiod/2+3)data=data+1;Endmodule顶层模块设计模块功能:对所设计的两个可综合模块M1和M2进行联合测试,观察M1模块能否正确地把并行数据转换成符合协议要求的串行码流;串行码流能否通过M2模块的处理输出符合设计要求的信号。代码:'timescale1ns/1ns'include"sigdata.v"'include"ptosda1.v"'include"out16hi.v"modul
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化工介绍教学
- 2026山东济宁市曲阜师范大学招聘120人(博士-长期招聘)考试参考试题及答案解析
- 2026年泰安东平县事业单位初级综合类岗位公开招聘工作人员(78人)考试参考题库及答案解析
- 2026新疆阿勒泰地区青河县人力资源服务中心招聘就业见习人员笔试参考题库及答案解析
- 2026四川广安市广安区白市镇人民政府选用片区纪检监督员1人备考考试试题及答案解析
- 2026年弋阳县公安局招聘警务辅助人员3人备考考试题库及答案解析
- 2026河南省中原资产管理有限公司招聘5人考试备考题库及答案解析
- 2026湖南怀化市麓山国际陆港实验学校春季临聘教师招聘9人备考考试题库及答案解析
- 2026广西防城港市东兴市人力资源和社会保障局城镇公益性岗位(第一批)开发计划41人笔试模拟试题及答案解析
- 2026浙江省应急管理科学研究院招聘编外人员考试参考试题及答案解析
- 2025年-辅导员素质能力大赛笔试题库及答案
- 2026届湖北省宜昌市部分示范高中教学协作体数学高一上期末教学质量检测试题含解析
- 2025年风电运维成本降低路径报告
- 2026年《必背60题》 计算机科学与技术26届考研复试高频面试题包含详细解答
- 2026年初中奥数试卷真题及答案
- 江苏省教改课题申报书
- 2026年扬州市职业大学单招职业适应性考试题库及完整答案详解1套
- 公司人力资源部2026年工作计划
- 债务重组教学课件
- 2025年中国资产管理行业发展研究报告
- 雨课堂学堂云在线《人工智能原理》单元测试考核答案
评论
0/150
提交评论