OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6681|回复: 3

[ALTERA] 数字识别的边界提取遇到的问题

[复制链接]

3

主题

10

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2019-10-30
在线时间
14 小时
发表于 2020-8-18 10:47:00 | 显示全部楼层 |阅读模式
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



最佳答案

查看完整内容[请看2#楼]

初始值是在project_done_flag从0变为1的时候,row_chg 会产生一个沿
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

132

帖子

0

精华

高级会员

Rank: 4

积分
648
金钱
648
注册时间
2020-4-21
在线时间
83 小时
发表于 2020-8-18 10:47:01 | 显示全部楼层
初始值是在project_done_flag从0变为1的时候,row_chg 会产生一个沿
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2019-10-30
在线时间
14 小时
 楼主| 发表于 2020-8-19 19:41:02 | 显示全部楼层
932904676xy 发表于 2020-8-18 17:17
初始值是在project_done_flag从0变为1的时候,row_chg 会产生一个沿

不对呀,project_done_flag从0变1后,还得判断 if(ypos == row_border_hgh + 1'b1)呢,然后row_chg才会根据row_cnt跳沿。疑惑的就是第一次判断的时候这个row_border_hgh按道理没有被赋值啊,又怎么去判断ypos呢
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2019-10-30
在线时间
14 小时
 楼主| 发表于 2020-8-20 09:00:28 | 显示全部楼层
932904676xy 发表于 2020-8-18 17:17
初始值是在project_done_flag从0变为1的时候,row_chg 会产生一个沿

我仿真了一下弄明白了,目的就是project_done_flag从0变1的时候,row_chg会产生1个时钟周期的高电平。仿真好重要
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-3 13:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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