搜索
bottom↓
回复: 6

夏宇闻书上的一道练习题.

[复制链接]

出0入0汤圆

发表于 2010-8-5 17:00:18 | 显示全部楼层 |阅读模式
夏宇闻书上的一道练习题:
假设有4个8位数据是按照时钟节拍串行输入的,
要求用时钟触发任务,
每个时钟周期完成一次数据的冒泡排序。
module(
                input a,
                input b,
                input c,
                input d,
                input clk,
                output reg [7:0] a1,
                output reg [7:0] a2,
                output reg [7:0] a3,
                output reg [7:0] a4
        );

我估计是要考察流水线.但是我想了很久也没想到好的办法.
大家有谁做过这个练习么.

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-8-7 21:34:27 | 显示全部楼层
新手飘过,等待高手来解答。
不知道流水线是怎么用。
能不能象C语文那样用forever?

出0入0汤圆

发表于 2010-8-7 23:16:44 | 显示全部楼层
首先嵌一个51核,余下的就好搞定了

出0入0汤圆

发表于 2010-8-12 20:42:53 | 显示全部楼层
这个不难,我做过流水线实现冒泡法的设计,可以先用4个dff串连,
组成移位寄存器,引出4个抽头,然后接到比较器中,比较器采用寄存器输出

这是原理图,由四级流水线实现,每级比较一次,实现一次移动,总共四级饥渴完成 (原文件名:冒泡法排序流水线实现原理图.png)

出0入0汤圆

 楼主| 发表于 2010-8-16 15:49:49 | 显示全部楼层
回复【3楼】honsimark
-----------------------------------------------------------------------

嗯,好方法....谢谢

出0入0汤圆

 楼主| 发表于 2010-8-21 11:43:31 | 显示全部楼层
回复【3楼】honsimark
-----------------------------------------------------------------------

看来是我的理解有问题.

流水线排序
module cmp(
                        input clk,
                        input rst,
                        input [7:0] data,
                        output reg [7:0] data1,
                        output reg [7:0] data2,
                        output reg [7:0] data3,
                        output reg [7:0] data4
                );
reg [7:0] temp1,temp2,temp3,temp4;
always @ (posedge clk)
        if(!rst)
                begin
                        temp1<=8'd0;
                        temp2<=8'd0;
                        temp3<=8'd0;
                        temp4<=8'd0;
                end
        else
                begin
                        temp1<=data;
                        temp2<=temp1;
                        temp3<=temp2;
                        temp4<=temp3;
                end
reg [7:0] t1,t2,t3,t4;
always @ (posedge clk)
begin
        sort(temp1,temp2,t1,t2);
        sort(temp3,temp4,t3,t4);
end

reg [7:0] t21,t22,t23,t24;
always @ (posedge clk)
begin
        t21<=t1;
        sort(t2,t3,t22,t23);
        t24<=t4;
end

reg [7:0] t31,t32,t33,t34;
always @ (posedge clk)
        begin
                sort(t21,t22,t31,t32);
                sort(t23,t24,t33,t34);
        end

always @ (posedge clk)
        begin
                data1<=t31;
                sort(t32,t33,data2,data3);
                data4<=t34;
        end
/*********交换位置的任务***************/
task sort;
        input [7:0] ix,iy;
        output [7:0] ox,oy;
        if(ix<iy)
                begin
                        ox<=iy;
                        oy<=ix;
                end
        else
                begin
                        ox<=ix;
                        oy<=iy;
                end
endtask
                       
endmodule


组合逻辑排序

module sort4(ra,rb,rc,rd,a,b,c,d);
input [3:0] a,b,c,d;
output [3:0] ra,rb,rc,rd;
reg [3:0] ra,rb,rc,rd;
reg [3:0]va,vb,vc,vd;
always @ (a or b or c or d)
        begin
                {va,vb,vc,vd}={a,b,c,d};
                sort(va,vc);
                sort(vb,vd);
               
                sort(va,vb);
                sort(vc,vd);
               
                sort(vb,vc);
                {ra,rb,rc,rd}={va,vb,vc,vd};
        end

task sort;
        inout [3:0] x,y;
        reg [3:0] temp;
        if(x>y)
                begin
                        temp=x;
                        x=y;
                        y=temp;
                end
        else
                temp=4'd0;
endtask
endmodule


哪种排序方法更优越?为什么?

出0入0汤圆

发表于 2010-8-21 17:24:26 | 显示全部楼层
组合逻辑可定是不行的,要求是按照时钟节拍串行输入的,再说组合逻辑可能不太稳定,上面的时序逻辑对的,不错!,和上面的原理图一个意思
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 17:31

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表