3845|8

169

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

提供一段简单的流水线算法(HDL)程序供大家参考。 [复制链接]




此内容由EEWORLD论坛网友yupc123原创,如需转载或用于商业用途需征得作者同意并注明出处
HDL流水线加速累加算法,分成4段累加增加更新速度,每段1024个数据,取1024*4个数据的平均值,
module radio_add
                        (
                        input clk,
                        input rst,
                        input [20:0] radiodat,                 //AD采样值
                        input daten,                               //数据使能信号
                        output reg [20:0] add_radiodat    //输出的平均值
                        //output daten
                        );
reg [31:0] r_AD_sum;                                //累加和
reg [31:0] r_AD_sum_temp1;                //累加和1
reg [31:0] r_AD_sum_temp2;                //累加和2
reg [31:0] r_AD_sum_temp3;                //累加和3
reg [9:0] r_dat_num;
wire [33:0] w_sum;
assign w_sum=r_AD_sum+r_AD_sum_temp1+r_AD_sum_temp2+r_AD_sum_temp3;
always @(posedge clk or posedge rst)
begin
        if(rst)
        begin
                r_AD_sum<=0;
                r_AD_sum_temp1<=0;
                r_AD_sum_temp2<=0;
                r_AD_sum_temp3<=0;
                add_radiodat<=0;
                r_dat_num<=0;
                //r_radiodat<=0;
        end
        else
        begin
                if(daten)
                begin
                        //r_radiodat<=radiodat;
                        r_dat_num<=r_dat_num+1'b1;
                        if(r_dat_num==0)
                        begin
                                r_AD_sum<=radiodat;                             //第一步,初始化
                                r_AD_sum_temp1<=r_AD_sum;             //第1024步,保存1024个数据的累加和
                                r_AD_sum_temp2<=r_AD_sum_temp1;//第1024*2步,保存1024个数据的累加和
                                r_AD_sum_temp3<=r_AD_sum_temp2;//第1024*3步,保存1024个数据的累加和
                                add_radiodat<=w_sum[33:13];             //第1024*4步,得到1024*4个数据的平均值
                        end
                        else
                        begin
                                r_AD_sum<=r_AD_sum+radiodat;     //第二步,开始累加
                        end
                end
        end
end
endmodule

此帖出自FPGA/CPLD论坛

最新回复

没问题  详情 回复 发表于 2016-8-4 00:12
点赞 关注
 

回复
举报

1950

帖子

4

TA的资源

版主

沙发
 
兄弟,你这个跟流水线比较接近了,还可以在改进改进

assign w_sum=r_AD_sum+r_AD_sum_temp1+r_AD_sum_temp2+r_AD_sum_temp3;
这个计算 时序上有点吃力
此帖出自FPGA/CPLD论坛

点评

水平不错,一眼能看出这个组合逻辑耗时比较长,但是当clk为100M时,是没问题的,而这个程序我是用在1K采样频率,所以时序上没问题  详情 回复 发表于 2016-8-3 08:30
个人签名MicroPython中文社区https://micropython.org.cn/forum/  
 
 

回复

169

帖子

1

TA的资源

一粒金砂(高级)

板凳
 
5525 发表于 2016-8-2 22:02
兄弟,你这个跟流水线比较接近了,还可以在改进改进

assign w_sum=r_AD_sum+r_AD_sum_temp1+r_ ...

水平不错,一眼能看出这个组合逻辑耗时比较长,但是当clk为100M时,是没问题的,而这个程序我是用在1K采样频率的情况下,所以时序上是没问题的
此帖出自FPGA/CPLD论坛
 
 
 

回复

1950

帖子

4

TA的资源

版主

4
 

reg [31:0] r_AD_sum;                                //累加和
reg [31:0] r_AD_sum_temp1;                //累加和1
reg [31:0] r_AD_sum_temp2;                //累加和2
reg [31:0] r_AD_sum_temp3;                //累加和3

wire [33:0] w_sum;
assign w_sum=r_AD_sum+r_AD_sum_temp1+r_AD_sum_temp2+r_AD_sum_temp3;

象这样[31:0]宽的,正常只写 2个,
不管时序有多慢,这样代码复用率高些。
象楼主,这么爱动手,生产率的提高2倍。
此帖出自FPGA/CPLD论坛

点评

你提的意见不错,我采纳了,我改进一下  详情 回复 发表于 2016-8-3 13:25
个人签名MicroPython中文社区https://micropython.org.cn/forum/  
 
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

5
 
这两年一直用功能块,VHDL语言忘掉大半了,
此帖出自FPGA/CPLD论坛

点评

wugx,你好 这说明,软件硬件你 都在行啊。厉害! 欢迎常来,跟大家共享心得体会!  详情 回复 发表于 2016-8-3 20:32
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 
 

回复

169

帖子

1

TA的资源

一粒金砂(高级)

6
 
5525 发表于 2016-8-3 11:54
reg [31:0] r_AD_sum;                                //累加和
reg [31:0] r_AD_sum_temp1;           ...

你提的意见不错,我采纳了,我改进一下
此帖出自FPGA/CPLD论坛

点评

你不但技术好,快刀干活 还能 听的进人意见,你是棒棒的。 必有高升啊!  详情 回复 发表于 2016-8-3 20:34
 
 
 

回复

1950

帖子

4

TA的资源

版主

7
 
wugx 发表于 2016-8-3 11:58
这两年一直用功能块,VHDL语言忘掉大半了,

wugx,你好
这说明,软件硬件你 都在行啊。厉害!

欢迎常来,跟大家共享心得体会!
此帖出自FPGA/CPLD论坛

点评

没问题  详情 回复 发表于 2016-8-4 00:12
个人签名MicroPython中文社区https://micropython.org.cn/forum/  
 
 
 

回复

1950

帖子

4

TA的资源

版主

8
 
yupc123 发表于 2016-8-3 13:25
你提的意见不错,我采纳了,我改进一下

你不但技术好,快刀干活

还能 听的进人意见,你是棒棒的。
必有高升啊!
此帖出自FPGA/CPLD论坛
个人签名MicroPython中文社区https://micropython.org.cn/forum/  
 
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

9
 
5525 发表于 2016-8-3 20:32
wugx,你好
这说明,软件硬件你 都在行啊。厉害!

欢迎常来,跟大家共享心得体会!

没问题
此帖出自FPGA/CPLD论坛
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表