电子科大EDA大赛上机题Word文档下载推荐.docx
- 文档编号:20440338
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:18
- 大小:235.94KB
电子科大EDA大赛上机题Word文档下载推荐.docx
《电子科大EDA大赛上机题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《电子科大EDA大赛上机题Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
3,从机相当于UART发送接收机。
当控制单元接收到到从机信号时,给出握手信号给主机,使得传输线有效。
三、工作原理
四、系统框图
五、主要模块说明
1、UART模块
2、串并转换模块
3.FIFO模块
六、仿真结果及说明
七、资源报告
八、设计总结
九、源代码
8位串行数据排序设计
设计一个电路实现以下功能:
(1)前8个时钟周期从数据输入端口依次输入8个不同大小的数据,数据为8位无符号数。
(2)从第9个时钟周期开始从大到小依次将前8个时钟周期输入的数据输出。
(3)到第16个时钟周期时输出完毕,开始接受下一轮数据输入。
要求:
A、尽量使用最少资源实现,同时最大限度提高处理速度。
B、设计合理的接口握手信号。
C、在设计报告中详细阐述设计思想并给出功能验证方案、验证结果、综合报告、时序分析在内的对电路设计的综合分析。
前8个时钟握手信号(isen)拉高,代表输入数据有效。
每一个时钟内将输入的数据和之前的已经排好顺序的数据进行比较大小,按从大到小的顺序分别存放到8个寄存器中;
后8个时钟依次对数据从大到小输出。
比较大小的方法:
采用类似于二分法的方式,对输入数据先和已排好数据列的中间值比较,再分情况取其中某一段的中间数据比较。
举其中需要比较最多的一种情况经行讨论:
数据八d8和已有的d1——d7比较,d1到d7是已经排好序的从大到小的数,d8先和d4比较,再和d2、d6比较,最后和d1、d3、d5、d7比较,这样最多只需要3级比较就可以完成每一个时钟的比较,有利于提高电路的运行速度。
电路采用时序设计,按要求每16个时钟周期完成一次数据的输入、比较、输出,比较大小采用8位的比较器来实现,根据输入数据的数量,我们最多采用3级数据比较完成每前8个时钟周期的比较,后8个时钟周期依次输出数据。
4.1系统结构图
4.2状态转换图
前8个状态代表数据输入和大小比较,后8个状态代表数据输出;
顶层模块3个输入,一个输出,握手信号放在内部,采用一个寄存器isen控制。
从图中可以看到,当握手信号为低的时候,代表此时数据输入无效,输出端显示上一回合的排序结果,从图中可以看到,输出为23,22,21,20,19,18,17,16,排序正确;
当握手信号为高的时候,代表此时数据输入有效,电路对输入的数据进行排序,而输出维持在0,从图中看到,这次输入的数据位32——39,而这几个数据在8个时钟周期后降序输出了,39,38,37,36……
7.1RTL级图:
7.2资源利用表
7.3时序总结
报告显示,该电路可以达到260m,能较好地实现要求
本设计采用过了仿顺序操作的方式,利用了16个时钟周期完成了数据输入、大小比较、数据输出。
大小比较中,我们采用了二分法的思想,可以利用最多3级比较,更快地实现了数据的比较,增加了时钟频率。
最后报告显示,设计总共用了88个寄存器,电路速度可以达到260m,结果理想。
9.1设计代码
`timescale1ns/1ps
//////////////////////////////////////////////////////////////////////////////////
//Company:
//Engineer:
//
//CreateDate:
09:
30:
0805/22/2015
//DesignName:
//ModuleName:
queue8
//ProjectName:
//TargetDevices:
//Toolversions:
//Description:
//
//Dependencies:
//Revision:
//Revision0.01-FileCreated
//AdditionalComments:
modulequeue8(clk,rstn,pin,pout
);
inputclk;
inputrstn;
input[7:
0]pin;
outputpout;
reg[7:
0]pout;
reg[3:
0]i;
regisen;
0]d1;
0]d2;
0]d3;
0]d4;
0]d5;
0]d6;
0]d7;
0]d8;
always@(posedgeclkornegedgerstn)begin
if(!
rstn)begin
//reset
pout<
=8'
d0;
i<
=4'
b0;
isen<
=1'
b1;
end
else
case(i)
0:
if(isen)begin
i<
=i+1'
d1<
=pin;
pout<
=7'
end
1:
=i+1'
if(pin>
=d1)begin
d1<
d2<
=d1;
end
elsebegin
2:
if(isen)begin
=d1)begin
d3<
=d2;
elseif(pin>
=d2)begin
=d2;
else
3:
if(pin>
d4<
=d3;
end
elsebegin
d2<
d3<
d4<
=d3;
=d3)begin
=pin;
4:
d1<
d5<
=d4;
d5<
elseif(pin>
=d4)begin
else
5:
=d2)begin
if(pin>
=d1)begin
d1<
d2<
d3<
d4<
d5<
d6<
=d5;
end
elsebegin
end
=d4)begin
d6<
=d5)begin
d6<
end
end
6:
=d3)
=d2)
d7<
=d6;
d7<
=d5)
=d4;
=d6)begin
d6<
7:
isen<
=0;
d8<
=d7;
elseif(pin>
=d3)begin
elseif(pin>
if(pin>
=d7)begin
8:
begin
i<
=i+1;
pout<
=d1;
9:
10:
11:
12:
=d5;
13:
=d6;
14:
=d7;
15:
=4'
isen<
=1;
=d8;
endcase
end
endmodule
9.2测试代码
modulequeue_tb;
//Inputs
regclk;
regrstn;
reg[7:
//Outputs
wire[7:
queue8uut(
.clk(clk),
.rstn(rstn),
.pin(pin),
.pout(pout)
initialbegin
//InitializeInputs
clk=0;
rstn=1;
pin=0;
#50rstn=0;
#120rstn=1;
#3000$stop;
always#(25)clk=~clk;
always@(negedgeclk)
begin
if(!
rstn)
pin=8'
else
pin=pin+1'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子科 EDA 大赛 上机