版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、连续输入数据处理一,题目 对题目的说明: 1,当Start信号变为低的时候,表示输入数据无效,系统回到初始状态。 2,当Rst信号变为低的时候,系统复位。 3,数据输入的过程中,系统可以在任意时刻复位。 4,输入数据人为地不超过20个。二,设计思想概述考虑到这是一个时序题目,这就涉及到结果的输出延时问题。是在数据输入结束后立刻流出结果,还是允许延时若干时钟周期后再流出结果,要根据具体的性能要求来决定。在我们小组的设计中,采取尽快流出结果的设计方式。即当输入8位全零的数据时,在时钟下一拍就可以得到计算结果。借鉴计算机体系结构中的流水的思想,可以考虑数据一边输入一边送入相关的功能部件进行计算,主要
2、是加法器和乘法器。应该尽可能选择低位数的加法器和乘法器以减少设计成本。本实验共涉及到3个加法器和2个乘法器。加法器分别是11位,14位和18位。乘法器分别是8位和18位。三,各站的描述 基本的数据流程如下,触发器由一个时钟clk统一控制。数据选择器在此没有画出。四,FSM图示描述 全部程序共包括9个状态,根据输入数据是否为全零来判断选择状态的转化。初始状态设置为State0。StateY, StateY3, StateY4分别是运算状态。五,程序描述部分 1,主程序代码主要部分 (1)以下是FSM控制流程always(present_state or Serial_in) begin case
3、(present_state) State0: begin Sel=3'b000; if(!Serial_in) Next_state=State0; else Next_state=State1; end State1: begin if(!Serial_in) Next_state=StateY; else Next_state=State2; endState2: begin if(!Serial_in) Next_state=StateY; else Next_state=State3; end State3: begin if(!Serial_in) Next_state=S
4、tateY3; else Next_state=State4; end State4: begin if(!Serial_in) Next_state=StateY4; else Next_state=State5; end State5: begin if(!Serial_in) Next_state=StateY; else Next_state=State5; end StateY: /output process begin Sel=3'b100; Next_state=State0; end StateY3: begin Sel=3'b010; Next_state=
5、State0; end StateY4: begin Sel=3'b001; Next_state=State0; end default: Next_state=State0; endcase end (2)数据通路代码always(posedge clk) begin if(!Rst) begin Z0<=8'b0; Z4<=14'b0; Z5<=19'b0; Z6<=11'b0; present_state<=State0; / state jump end else begin if(!Start) begin Z0
6、<=8'b0; Z4<=14'b0; Z5<=19'b0; Z6<=11'b0; present_state<=State0; end else Z0<=Serial_in; Z4<=Z3; Z5<=Z2; Z6<=Z1; present_state<=Next_state; end end (3)内部寄存器之间关系代码 always(Z0 or Z4 or Z5 or Z6 or Rst or Start) /data process begin if(!Rst)|(!Start) begin Z1&
7、lt;=10'b0; Z2<=18'b0; Z3<=13'b0; end else Z1<=Z0+Z6; Z2<=Z0*Z6+Z5; Z3<=Z07:4*Z03:0+Z4; end 2,测试码程序部分 timescale 10ns/1ns /define time module test; reg7:0 Serial_in; reg Start,Rst; reg clk; wire13:0 Y; wire17:0 Y3; wire18:0 Y4; parameter Delay=10; /delay parametermainprogram
8、 FSM_DATA(Y,Y3,Y4,Done,Serial_in,clk,Rst,Start); always #(Delay/2) clk=clk; /set clk initial /initial process begin clk=1; Rst=0; Start=0; Serial_in=8'b0; #(0.1*Delay) Start=1; Rst=1; #Delay Serial_in= 8'b0100_0010; #Delay Serial_in= 8'b0001_0010; #Delay Serial_in= 8'b1000_0010; #(0.
9、2*Delay) Rst=0; #Delay Rst=1; #(0.1*Delay) Serial_in= 8'b0010_0010; #Delay Serial_in= 8'b0001_0100; #Delay Serial_in= 8'b0000_0000; #Delay Rst=0; #Delay Rst=1; #(2*Delay) Serial_in= 8'b0000_0101; #Delay Serial_in= 8'b0000_0011; #Delay Serial_in= 8'b0001_0010; #Delay Serial_in
10、= 8'b0000_0000; #Delay Rst=0; #Delay Rst=1; #(2*Delay) Serial_in= 8'b0000_0010; #Delay Serial_in= 8'b0000_0011; #Delay Serial_in= 8'b0001_0000; #Delay Serial_in= 8'b0000_1011; #Delay Serial_in= 8'b0000_0000; #Delay Rst=0; #Delay Rst=1; #(2*Delay) Serial_in= 8'b0001_0010;
11、#Delay Serial_in= 8'b0010_0011; #Delay Serial_in= 8'b0010_0100; #Delay Serial_in= 8'b0100_0111; #Delay Serial_in= 8'b0110_0101; #Delay Serial_in= 8'b0000_0000; #(30*Delay) $finish; endinitial $monitor ($time,"Serial_in=%b Y=%b Y3=%b Y4=%b",Serial_in,Y,Y3,Y4); endmodule六
12、,仿真波形比较 选用仿真软件:ModelSim SE 根据前面的测试码的输入验证逻辑功能Serial_in= 8b0010_0010; Serial_in= 8'b0001_0100; Serial_in= 8b0000_0000; 按逻辑结果为2*2+1*4=8 二进制结果为:1000 仿真波形如下: Serial_in= 8'b0000_0101; Serial_in= 8'b0000_0011; Serial_in= 8b0001_0010; Serial_in= 8b0000_0000; 按逻辑结果为=5*3+5*18+3*18=159; 二进制结果为:1001
13、1111 仿真波形如下: Serial_in= 8'b0000_0010; Serial_in= 8'b0000_0011; Serial_in= 8'b0001_0000; Serial_in= 8'b0000_1011; Serial_in= 8'b0000_0000; 逻辑结果为:2*3+2*16+2*11+3*16+3*11+16*11=317二进制:100111101 仿真波形如下: 通过仿真可以看出,基本的逻辑功能得到了正确的实现,而且数据一旦输入完毕,结果在时钟下一拍立刻输出,实时性得到了证实。七,RTL级电路Software: Synpl
14、ify Pro Technology: Altera MAX9000Port: EPM9320Frequency: 100MHz八,结果设计分析1, 逻辑级数比较长,延时可能比较大2,3个加法器,2个乘法器3,4个数据选择器,3个三态门4,4个D触发器,1个ROM5,基本逻辑功能得到实现综合后的图和与预计的图相比较相差不大,综合后的图所用器件不多,综合频率很高,能够很好地节约成本,从逻辑结构上来看电路也得到了优化。九,几点设计感悟1, 很多的方面需要考虑,遇到了很多没有想到的问题,只有做过才会知道。For example不同always语句中不能对同一个变量赋值,仿真没有错误,综合时才发现。连
15、续赋值和阻塞赋值不能写在一个循环里等等。2, 多请教一些老师朋友对自己的设计会有很大帮助。3, 对仿真综合软件的使用参考一些书籍,尽快熟练掌握软件使用。附录(主程序源代码):module mainprogram(Y,Y3,Y4,Done,Serial_in,clk,Rst,Start); input7:0 Serial_in; / 8 bit input input clk,Start,Rst; output Y,Y3,Y4,Done; / output signals reg Done; reg2:0 Sel; /select signal reg13:0 Y; reg17:0 Y3; re
16、g18:0 Y4; reg7:0 Z0; reg10:0 Z1,Z6; reg18:0 Z2,Z5; reg13:0 Z3,Z4; /inner register define reg3:0 present_state, Next_state; /state define parameter State0= 4'b0000, /gray code State1= 4'b0001, State2= 4'b0011, State3= 4'b0010, State4= 4'b0110, State5= 4'b0100, StateY= 4'b1
17、100, StateY3=4'b1000, StateY4=4'b1001; always(posedge clk) /or negedge Rst or negedge Start) begin if(!Rst) begin Z0<=8'b0; Z4<=14'b0; Z5<=19'b0; Z6<=11'b0; present_state<=State0; / state jump end else begin if(!Start) begin Z0<=8'b0; Z4<=14'b0; Z
18、5<=19'b0; Z6<=11'b0; present_state<=State0; end /Start=0 then jump to state else Z0<=Serial_in; Z4<=Z3; Z5<=Z2; Z6<=Z1; /inner register relation present_state<=Next_state; end end always(Z0 or Z4 or Z5 or Z6 or Rst or Start) /data process begin if(!Rst)|(!Start) begin
19、 Z1<=10'b0; Z2<=18'b0; Z3<=13'b0; end else Z1<=Z0+Z6; Z2<=Z0*Z6+Z5; Z3<=Z07:4*Z03:0+Z4; end always(present_state or Serial_in) begin case(present_state) State0: /initial process begin Sel=3'b000; if(!Serial_in) Next_state=State0; else Next_state=State1; / state jump
20、 end State1: begin if(!Serial_in) Next_state=StateY; else Next_state=State2; end State2: begin if(!Serial_in) Next_state=StateY; else Next_state=State3; end State3: begin if(!Serial_in) Next_state=StateY3; else Next_state=State4; end State4: begin if(!Serial_in) Next_state=StateY4; else Next_state=State5; end State5: begin if(!Serial_in) Next_state=StateY; else Next_state=State5; end StateY: /output process begin Sel=3'b100; Next_state=State0; end
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024水利工程环保与生态修复合作协议
- 二零二五年度图书档案搬迁与数字化服务合同3篇
- 2024隗蓉与合作伙伴关于项目合作的合同
- 二零二五年度北京二手房交易税费计算合同范本3篇
- 2024年货物配送服务合同
- 2024年限定版杂交水稻种子订购协议版
- 2024版海洋运输货物保险合同示范文本
- 2024年茶产品品牌维权与法律服务合同
- 2024年简易离婚合同填写指南
- 2024年船舶港口使用与管理合同
- 2024版青岛市劳动合同
- 招标文件范本江苏版
- 2024年江苏客运从业资格证继续教育
- 人教版高中地理选择性必修1第一章地球的运动单元检测含答案
- 2024年中考复习-数学(广州专用)(解析版)
- 精细陶瓷 断裂韧性试验方法 单边V型切口梁法
- 2024年海峡出版发行集团有限责任公司招聘笔试冲刺题(带答案解析)
- 第三十六届全国电力行业风力发电运行检修职业技能竞赛基础理论题库附有答案
- 人教版三年级上册数学期末测试卷a4版可打印
- 科室医疗质量与安全管理小组工作制度
- 欢乐喜剧人小沈阳《四大才子招亲大会》剧本投稿:程祅祆
评论
0/150
提交评论