完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
module counter2(clk, rst, data_in, data_size, p2s_en, query_flag); input clk; input [63:0] data_in; output [7:0] data_size; output query_flag; //reg [7:0] count;//2016.02.29 reg [7:0] data_size; reg query_flag; begin //----------------------------------------------------------------------------- always @(posedge clk or negedge rst) if (!rst) else if (data) end begin begin p2s_en <= 1'b0; m <= 0; end else if (flag)//2016.03.01 //if (flag && data[127])//2016.03.01 data_size <= 64-m; if (data[63]==1 && data[62]==0 && data[61]==0 && data[60]==0) query_flag <= 1'b1; query_flag <= 1'b0; else data<= data<< 1; end //if (data[127]), then program will be a dead cycle. for example data[7:0]=8'b01001101. //2015.04.02 /* p2s_en <= 1'b1; p2s_en <= 1'b0; end /* //ERROR: memory allocation failure begin begin p2s_en <= 1'b0; m <= 0; else while (!data[127]) data <= data << 1; end p2s_en <= 1'b1; query_flag <= 1'b1; query_flag <= 1'b0; end endmodule |
|
相关推荐
3个回答
|
|
本帖最后由 卿小小_9e6 于 2020-12-12 16:06 编辑
感觉代码有的地方不规范,有的变量我也没看懂什么意思。 猜测代码功能是对数据有效长度做计量,所以对部分信号做了调整,包括增加size_valid信号。 仿真了三组数据没有问题,代码可综合/已打包。
最佳答案
|
|
|
|
`timescale 1ns/1ns
module counter2(clk, rst, data_in, data_size, p2s_en, query_flag); input clk; input rst; input [63:0] data_in; output [7:0] data_size; output p2s_en; output query_flag; reg [63:0] data; reg [7:0] data_size; reg p2s_en; reg query_flag; reg flag; integer m; always @(data_in) begin data = data_in; end //----------------------------------------------------------------------------- always @(posedge clk or negedge rst) begin if (!rst) flag <= 1'b0; else if (data) flag <= 1'b1; end //----------------------------------------------------------------------------- always @(posedge clk or negedge rst) begin if (!rst) begin data_size <= 8'b0; p2s_en <= 1'b0; query_flag <= 1'b0; m <= 0; end else if (flag) begin if (data[63]) begin data_size <= 64-m; p2s_en <= 1'b1; if (data[63]==1 && data[62]==0 && data[61]==0 && data[60]==0) query_flag <= 1'b1; else query_flag <= 1'b0; end else begin data<= data<< 1; m <= m+1; end end end endmodule 刚刚的代码有问题,重新发了这个 |
|
|
|
路过学习,谢谢分享。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1278 浏览 1 评论
368 浏览 0 评论
【星嵌电子XQ138F-EVM开发板体验】(原创)8.安全FPGA防御黑客病毒(芯片设计制造级防护)源代码
1369 浏览 0 评论
【国产FPGA+OMAPL138开发板体验】(原创)7.硬件加速Sora文生视频源代码
2529 浏览 0 评论
【星嵌-XQ138F-试用连载体验】ARM驱动开发示例,LED亮灭,以及内核编译。
587 浏览 0 评论
1068 浏览 22 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-28 19:16 , Processed in 0.590896 second(s), Total 73, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号