在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: 甲壳虫

[求助] [verilog] Verilog语言的编写

[复制链接]
发表于 2016-4-9 12:02:08 | 显示全部楼层
这是仿真用的代码啊
 楼主| 发表于 2016-4-10 10:36:50 | 显示全部楼层
回复 9# ltshan
怎么看输出的数据temp啊
发表于 2016-4-10 14:35:53 | 显示全部楼层
学习了软件语言里的for循环转成硬件语言
发表于 2016-4-11 21:24:15 | 显示全部楼层
用计数器写
 楼主| 发表于 2016-4-12 16:40:33 | 显示全部楼层
回复 14# 汉白雪玉
能具体说一下怎么写吗?谢谢
发表于 2016-4-14 10:57:10 | 显示全部楼层

RE: [verilog] Verilog语言的编写





  1. for(i=0;i<14;i++){
  2.         for(j=0;j<14;j++){

  3.             avg                = 0        ;
  4.             temp        = 0        ;

  5.             for(k=0;k<=2;k++){
  6.                   for(l=0;l<=2;l++){
  7.                           avg = avg + (double)pd[i+k][j+l];

  8.         // ###############
  9.         // 4 counter
  10.         // ###############
  11.         //
  12.         //
  13.         // 1st counter  cnt_dff_l = (cnt_dff_l==l_max) ? 0                 : cnt_dff_l + 1          ;
  14.         //
  15.         // 2nd counter cnt_dff_k = (cnt_dff_l==l_max) && (cnt_dff_k==k_max) ? 0                             :
  16.         //                                       (cnt_dff_l==l_max)                                       ? cnt_dff_k + 1           :
  17.         //                                                                                                               cnt_dff_k                 ;
  18.         //
  19.         // 3rd counter cnt_dff_j = (cnt_dff_l==l_max) && (cnt_dff_k==k_max) && (cnt_dff_j==j_max) ? 0                        :
  20.         //                            (cnt_dff_l==l_max) && (cnt_dff_k==k_max)                                                ? cnt_dff_j + 1        :
  21.         //                                                                                                                                                   cnt_dff_j ;        
  22.         //
  23.         // 4th counter cnt_dff_i = (cnt_dff_l==l_max) && (cnt_dff_k==k_max) && (cnt_dff_j==j_max) && (cnt_dff_i==i_max) ? 0                     :
  24.         //                           (cnt_dff_l==l_max) && (cnt_dff_k==k_max) && (cnt_dff_j==j_max)                                                ? cnt_dff_i + 1   :
  25.         //                                                                                                                                                                                       cnt_dff_i          ;
  26.         // ###############
  27.         // avg_latch
  28.         // ###############
  29.         //  
  30.         // addr1          = cnt_dff_i + cnt_dff_k ;
  31.         // addr2          = cnt_dff_j + cnt_dff_l ;
  32.         // avg_tmp     = avg_dff + pd[addr1][addr2] ;
  33.         //
  34.         // avg_latch     = (cnt_dff_l==l_max) && (cnt_dff_k==k_max) && (cnt_dff_j==j_max) && (cnt_dff_i==i_max) ? avg_tmp : avg_latch ;
  35.                   }
  36.             }
  37.             
  38.             avg = avg / ((double)sn*sn);
  39.         
  40.         // ###############
  41.         // avg_div
  42.         // ###############
  43.         //
  44.         // avg_div = avg_latch / (sn*sn)

  45.             for(k=-1;k<=1;k++){
  46.                   for(l=-1;l<=1;l++){
  47.                          temp = temp + ((double)pd[i+k][j+l] -avg) * ((double)pd[i+k][j+l] -avg);
  48.                   }
  49.             }  
  50.             
  51.         // ###############
  52.         // temp_latch  
  53.         // ###############
  54.         //  temp_tmp = temp_dff + (pd[addr1][addr2] - avg_div) * (pd[addr1][addr2] - avg_div) ;
  55.         //
  56.         //  temp_latch = (cnt_dff_l==l_max) && (cnt_dff_k==k_max) && (cnt_dff_j==j_max) && (cnt_dff_i==i_max) ? temp_tmp : temp_latch ;

  57.         }
  58. }



复制代码


寫個概念,需自行改寫成正統 Verilog 語法。

1. 需要用 clock DFF 存取資料,造計數器,取pd資料位置,待所有 Sum完成,才能做除法運算
2. temp 運算結果會慢 avg_div 整整一個 counter 循環
3. 以上概念可進行電路合成
发表于 2016-4-14 15:04:05 | 显示全部楼层
看不懂 路过
 楼主| 发表于 2016-4-15 10:25:46 | 显示全部楼层
回复 8# ltshan

首先谢谢你,我还有一个问题就是   avg+=(double)pd[i+k][j+l];这个语句你是怎么给写的。
发表于 2016-4-15 13:29:36 | 显示全部楼层
回复 18# 甲壳虫

其实我只是告诉你怎么将for循环转换成verilog,为方便起见, 里面用的整数运算。

你说的那个表达式,具体是什么不会写呢? 双精度的转换和运算需要你的平台支持FPU。 其它应该都不是什么问题吧?
 楼主| 发表于 2016-4-15 20:02:25 | 显示全部楼层
回复 19# ltshan

就是那各pd[][]这个存储器该怎么去写。谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 19:55 , Processed in 0.021115 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表