新手上路
- 积分
- 48
- 金钱
- 48
- 注册时间
- 2019-10-30
- 在线时间
- 14 小时
|
1金钱
请问在数字特征识别例程中,边界的提取这有一点问题没有想通,比如下面的 row_border_high是怎么根据row_chg来提取的,因为row_chg是根据坐标y_pos是否到达上边界row_border_high而确定的,感觉他们两个row_border_high 和 row_chg 在相互决定啊,我想表达的就是在模块初始的时候,这个row_border_high是怎么提取出来的呢
assign row_chg = row_d0 ^ row_d1;
//检测行变化
always @(posedge clk) begin
if(project_done_flag) begin
row_cnt_t <= row_cnt; //
row_d1 <= row_d0 ; //
if(row_cnt_t != row_cnt) //
row_d0 <= ~row_d0;
end
else begin
row_d0 <= 1'b1;
row_d1 <= 1'b1;
row_cnt_t <= 4'hf;
end
end
//确定row_cnt
always @(posedge clk) begin
if(project_done_flag) begin
if(ypos == row_border_hgh + 1'b1)
row_cnt <= row_cnt == num_row - 1'b1 ? 'd0 : row_cnt + 1'b1;
end
else
row_cnt <= 12'd0;
end
//获取数字的行边界
always @(posedge clk) begin
if(row_chg)
row_border_addr <= (row_cnt << 1'b1) + 1'b1; //根据row_chg来改变row_border_addr[0]值
else
row_border_addr <= row_cnt << 1'b1;
end
always @(posedge clk) begin
if(row_border_addr[0])
row_border_hgh <= row_border_data; //上边界
else
row_border_low <= row_border_data; //下边界 //row_border_data对应相应的row_border_addr
end
|
|