作者e1090128 (肥龟)
看板Electronics
标题[请益]使用 Verilog写算平均的电路问题请教
时间Fri Sep 29 16:05:17 2017
小弟目前在学习使用verilog写一些电路
但最近写影像处理Mean Filter,需要算九宫格的平均值
但电路模拟後却无法产生Output
以下是我的code
module Mean(
input [9:0] DAGray,
input CLKin,
input iRES_N,
input iDVAL,
output reg oDVAL,
output [9:0] oDATA);
reg [7:0] pos [800*3-1:0];
reg [11:0] count;
reg chg;
integer i;
always@(posedge CLKin or negedge iRES_N)
begin
if(!iRES_N)
begin
oDVAL<=0;
chg<=0;
end
else begin
oDVAL <= iDVAL;
if(iDVAL) begin
for(i=2399;i>=1;i=i-1)
begin
pos[i]<=pos[i-1];
end
pos[0]<=DAGray[9:2];
end
if(count < 12'b011001000010) //1602
chg<=1'b0;
else begin
if(count > 12'b100101011111) //2399
begin
count<=12'b011001000001; //1601
end
chg<=1'b1;
end
count<=count+1;
end
end
reg [11:0] a;
reg [11:0] b;
reg [11:0] sub;
reg [9:0] out;
always@(posedge CLKin or negedge chg)
begin
if(!chg)
out<=10'b0;
else begin
/////////下面是将9个pixel相加除以9
a<=pos[1602]+pos[1602-1]+pos[1602-2]+pos[1602-800]+pos[1602-801]+pos[1602-802]+pos[1602-1600]+pos[1602-1601]+pos[1602-1602];
b<={3'b0,a[11:3]};
sub<=a-b;
out={1'b0,sub[11:3]};
end
end
assign oDATA=out;
endmodule
请各位大大帮帮小弟!!!!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.116.234.232
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Electronics/M.1506672320.A.9D1.html
1F:→ e1090128: 程式码还不太会排版请见谅 09/29 16:09
2F:推 ericute: counter没reset值? 09/29 19:02
3F:→ e1090128: 有喔,超过2399变回1601 09/29 20:45
4F:→ e1090128: 但我是模拟时连输出都没有,上面标示叉叉 09/29 20:46
5F:推 hsucheng: count没给初执 09/29 21:42
6F:→ ericute: 这样就是没初始值 10/02 21:36
7F:→ e1090128: verilog记得没有设初始它会自动设为0 10/03 13:44
8F:→ e1090128: 我後来有加初始後,在time simulation也是跑不出来 10/03 13:45
9F:→ qxxrbull: 给初始之後跑出来的变成如何? 10/04 00:33
10F:→ e1090128: 跟原本一样,没有差别 10/04 11:51
11F:推 mmonkeyboyy: 没有初值不一定是会变零 你没有 reset 10/04 20:26
12F:→ mmonkeyboyy: 你把模块再分开跑@_@~再分成更小跑看看 10/04 20:27
13F:→ mmonkeyboyy: 没看到你error什麽的 这是隔空抓药了 10/04 20:27
14F:→ mmonkeyboyy: 标xx还有就是你根本没有跑通程式...这也是一种可能性 10/04 20:28
15F:推 Jielolz: 你的pos不会有值吧... 10/06 01:26
16F:→ e1090128: 各位我解决了,是计算的问题,用assign 就可以运作了 10/07 12:34