存档

文章标签 ‘code’

一点教训

2011年6月5日 sigma 25 条评论 8,024 views

这个端午节真郁闷,一直在加班,直到加班到今晚九点多,服务器文件系统挂了,才能无奈的休息回。而这不意味这几天焦头烂额的生活已经结束,也许意味着服务器好了后会过的更焦头烂额!!

不过也只能怪自己,当初任务没做细,有些事一直在拖,搞得到紧要关头手忙脚乱。在这里随便扯扯教训,算是对做H264硬解码一个子模块的教训,也权充这周的日志。

  1. 万事不能拖,当解决的时候就必须解决。之前其实曾经有空整这东西,但是由于各种原因(包括自己的,以及各种对外部因素的依赖),一直没彻底搞定,自己也知道自己做的模块肯定会有问题,但却一直不想去改。这又是我执行力不够的体现,还是那就话,加强自己的执行力,任何事,想到了就去做。
  2. 不能报侥幸心理。之前解码中有个解出来的参数mb_skip_run,我想当然的以为他不应该超过一行的宏块数,虽然当时怀疑过自己的想法,但却报侥幸心理,觉得大部分视频的mb_skip_run都不会超过这个值,应该问题不大,的确,前面跑了很多视频,都没有出问题,可是昨天测了个视频,跑错了,一trace,发现问题就出在mb_skip_run上这点想当然。于是改,谁知,要不改状态机,得用到除法,而在Verilog中,用除法风险太高了,肯定出来的结果时序要求不符合,DC过不了,主频就惨了。最后只好大改,改状态机,还好,毕竟是自己写的,对状态机挺熟,花了一下午终于改好了,并且做了一些回归测试。还有,之前也怀疑过一个Frame会有几个Slice,但是由于没跑到这样的视频,所以也以为这样的视频很少,不做也罢,谁知,到最后还是得加。
  3. 思路得清晰,关键处要有文档,之前有个8×8块,我为了省面积,愣是想用4×4块的寄存器数(可以省700+寄存器)来完成8×8的残差计算和扫描,当时想通过4×4的想通过掩码把4×4打散成8×8块,当时就意识到逻辑会比较复杂,当时总觉得肯定可以,于是硬着头皮写了个逻辑,但自己都没有把握。由于之前没跑到8×8的视频,也不知道对否,就一直放在那。直到今天,跑了8×8的视频,才知道有问题,于是重新看了下代码,发现由于逻辑太复杂(需要先打散,之后扫描,扫描又分zigzag和field)以及没有文档,自己都看不懂自己当时是怎么写出那逻辑的。后来仔细想了想,想直接通过掩码,不用寄存器暂存8×8的块不现实(因为只打散的话,可以通过掩码做到,但是还要扫描,掩码就没辙了),于是只好加了用来暂存8×8的寄存器,并且残差输出的状态机也要改,又是一下午的时间才改完并且初步做了回归测试。
    马上就到端午节了,贴张粽子的图吧,望梅止渴下:

粽子

分类: life 标签: , , ,

Micolog添加自定义模块

2010年10月23日 sigma 14 条评论 33,785 views

有时,我们的博客需要经常更新一些模块的内容,如广告栏,以及一些其他不同的人设置不一样的工具。为了方便管理,这些模块最好都要移到后台,这样就可以经常更改模块内容而不用更改博客源码重新上传。之前,我在colin-young的博客上看到了一篇如何后台管理侧边栏模块的文章,受此启发,我想也可以把任何位置的模块都实现后台管理,经过尝试发现可行,具体效果直接看本文的中间和下面,左边的广告条以及aboutme就行了。在此简述一下实现方法(和colin-young的方法几乎一样,只是将其推广了)。

  • 在“\micolog\model.py”搜索“blognotice=db.TextProperty(default=”)”,在其后加入:
     YouModelName=db.TextProperty(default='') 
  • 在“\micolog\views\admin\setup.html”搜索“blog.blognotice”,在30行处关于设置blognotice的代码,仿照其语法,添加如下代码:
    <tr valign="top">
    <th scope="row">{% trans "YouModelName:"%}</th>
    <td><textarea id="YouModelName" style="width:95%" cols="45" rows="2" name="YouModelName">{{blog.YouModelName|escape}}</textarea>
    </td>
    </tr> 

    继续搜索blognotice,大概170行有如下代码

    <input value="title,subtitle,...,default_link_format,blognotice" type="hidden" name="str_options" />

    在blognotice附近添加你的模块名

  • 在需要调用该模块的地方,如sidebar.html,single.html等模板文件中,加入调用代码:
    <div id="YouModelName" class="widget widget_YouModelName">
    <h3>YouModelName</h3>
    <ul>
    {{blog.YouModelName}}
    </ul>
    </div>
  • 上传部署,在后台即可以看到模块设置了,支持任何html标签(注意,不能够转义,默认的blognotice转义了,即上面那步为{{blog.YouModelName}}而不是{{blog.YouModelName|escape}})

Done & enjoy~

Some opensource projects created by me

2010年9月25日 sigma 没有评论 14,077 views

On this page, i will place some projects created by me~
在本页我将一些我自己做的一些有意义的小工具或者小实验和大家分享

Projects created by when i am an undergradute student of USTC :( And all source codes  are licensed by GPL3.0以下是一些我本科做的一些小玩意儿,所有代码都用GPL3.0协议发布.)

  • An PWM generater ip core(一个生成PWM的IP):this is a ip core writen in verilog lauguage aimed at generating pwm wave at real time.You can download the source code of the project in the following address:
  • An 8088 IP core(8088CPU的IP核) writen in verilog, this is a opensource ip core create by HaoxiangLi and me,the ip core has implemented 40+ 8088 instructions.You can view the project home in Google Code. And you can download it from my Skydrive:
  • An NRF24L01 Communication(NRF24L01的通信模块) project,this a subproject of RoboGame@USTC. It can make the main robot board communication with the control hand board using NRF24L01.Download address:
分类: code, study 标签: , , , ,

test syntax highlight

2010年9月20日 sigma 没有评论 3,323 views
//======================================
//Name: Hello.cpp
//Description : Hello World in C++
//======================================
#include < iostream >
using namespace std;
int main() {
 cout << "!!!Grapeot is sb!!!" << endl; // prints !!!sb is sb!!!
return 0;}
分类: test 标签: , , , ,

无觅相关文章插件,快速提升流量