摘要: 近来一直在看haskell发现函数式编程还是挺好玩的.参考资料是`Learn You a Haskell`和`Programing in Haskell`,第一本书前部分有中文翻译版,看了3-四遍有点感觉.后面还没看,第二本有视频,有对应的ppt习题.第二本不厚就1百多页.看到第八章时郁闷了.function parsers.就是语法分析,不过这边实现的还是比较简单的书中实现了+*() 的解析,习题要自己写-/的解析.来来回回看了几遍,记下学习过程吧(可能有些不太正确)..--type Parser = String->Tree--type Parser = String->(Tr 阅读全文
posted @ 2012-05-02 21:43 zhuangzhuang1988 阅读(591) 评论(1) 推荐(0) 编辑
摘要: scons是个很强大的构建工具,著名的javascript引擎v8就是使用这个东东进行构建的,相比于makefile scons的代码更容易懂.scons本身是使用Python写的.scons中有很多默认的规则常用的是Program,StaticLibrary,SharedLibray对用与windows平台就是exe,lib,dll.scons对很多常用的编译提供了默认支持.也有自己的一套寻找路径规则,windows上提供了msvc,mingw....可以使用Tool,env.Tool 改变编译器,和编译器路径.即使scons提供了大量的编译器支持,但也不可能所有都想到,在scons中提供了 阅读全文
posted @ 2012-04-11 20:24 zhuangzhuang1988 阅读(1323) 评论(0) 推荐(0) 编辑
摘要: 这次看的东西很简单,是(参数化模块 <中式翻译>)Parameterized Modules.http://www.asic-world.com/verilog/para_modules1.html这种东西在别的语言中也很常见c语言中就用宏,c++中使用参数模版,vhdl中使用GENERIC来达到程序在编译过程的参数化.verilog中使用还是很简单的.直接使用关键字parameter来进行声明常量在使用模块时可以对常量进行覆盖.覆盖默认常量有三种方法.1.使用defparameter2.使用#()3.使用带名字的#(),这种方法是在verilog 2001中加进来的,好处是不容易 阅读全文
posted @ 2012-04-03 20:05 zhuangzhuang1988 阅读(973) 评论(0) 推荐(0) 编辑
摘要: 这次写关于状态机的.vhdl或者verilog中都会用到这个的,其实很多时候我们都在中用到,只是没有定义或者没有感觉到而已,如一个简单的计数器,只要来一个信号就跳到比它大一的状态,由于是有序的,所以没有必要写一堆if else.直接加一就可以了.http://www.asic-world.com/verilog/memory_fsm2.html以前没想过,这个作者这样说的,想想也是.在c语言圣经K&R的书中第一章有个计算单词的个数的程序,其中用到了一个状态位,是在单词中还是在不可见字符中.其实也可以想想成一个状态机.一共有2中状态{单词中,不再单词中},有四个转移方向,还有转移引发的计 阅读全文
posted @ 2012-04-02 21:45 zhuangzhuang1988 阅读(526) 评论(0) 推荐(0) 编辑
摘要: 今天晚上吃饭的时候在想,Quartus好像有个功能是可以可视化生成模块,自己用的是Icarus Verilog小强大的东西却没有这个功能.于是乎我就下自己做个.使用工具Python + PIL.PIL仅可以用来处理图片.也可以生成和绘制图片.生成图片代码如下:img = Image.new("RGB",(640,480))绘制图片需要先导入包ImageDraw.然后代码如下draw = ImageDraw.Draw(img)#xxx 就可以绘制形状了具体的可以看官方文档http://www.pythonware.com/library/pil/handbook/index. 阅读全文
posted @ 2012-04-01 22:57 zhuangzhuang1988 阅读(465) 评论(0) 推荐(0) 编辑
摘要: 这次再写个简单的verilog程序计数器module counter();reg clk;reg[3:0] count;initial begin clk = 0; count = 0; #100 $finish; end initial begin $dumpfile("test.vcd"); $dumpvars(); //$monitor("time= %d clk = %b count=%d", //这句用在命令行下面监控的 // $time... 阅读全文
posted @ 2012-04-01 14:40 zhuangzhuang1988 阅读(416) 评论(0) 推荐(0) 编辑
摘要: 晚上无聊,接着写第二篇吧.第一个实用的代码就用D出发器吧.很简单module d_flip(d,clk,q); input d,clk; output q; wire d,clk; reg q; always @ (posedge clk) begin q <= d; end endmodule解释如下,always想当于一直在运行,当 clk上升(posedge)时运行下面的语句`q<=d;`( 对应的VHDL语句是process(clk) begin if (clk'event and c... 阅读全文
posted @ 2012-03-31 23:01 zhuangzhuang1988 阅读(636) 评论(0) 推荐(0) 编辑
摘要: 在大学里学的是VHDL,不知道怎么学的,上个星期无聊把书拿出来看看,还是很有感觉的,vhdl不像是一般的pc程序,是有并发代码后顺序代码的.好几个并发的代码模式感觉跟OpenMP好像啊.额 扯远了.然后我就找工具来模拟.首先想到的是Quartus II,因为大学时用的就这个,但是这个东东不仅很大,而且是收费的.虽然网上有破解版的,但是我懒得下载(o(︶︿︶)o ,太懒了).然后找与VHDL齐名verilog,首先找教程,http://www.asic-world.com/verilog/veritut.html在这个教程的http://www.asic-world.com/verilog/to 阅读全文
posted @ 2012-03-31 22:12 zhuangzhuang1988 阅读(728) 评论(0) 推荐(0) 编辑
摘要: 本来打算搞VHDL的,但是怎么都没有找到个好的小巧的编译器+模拟器.Verilog跟VHDL差不多就试试它啦o(∩_∩)o .直接看的是http://www.asic-world.com/verilog/veritut.html这里的教程.Icarus Verilog官方地址在http://iverilog.icarus.com/,windows版的在http://bleyer.org/icarus/一共就7M.安装后有主要的三个工具iverilog.exe--编译工具vvp.exe模拟运行的gtkwave.exe显示模拟结果的.以一个简单的编码程序说明下.输入是 0x0002输出就是1,输入 阅读全文
posted @ 2012-03-30 12:59 zhuangzhuang1988 阅读(11081) 评论(1) 推荐(1) 编辑
摘要: 看过一篇文章将的是在AVR上实现intel 汇编daa指令.刚好我看到了<vhdl数字电路设计教程>这本书,上面讲到了定点除法.然后我也实现了下.#include <stdio.h>unsigned int my_div(unsigned int *src,unsigned int dst);int main(){ unsigned int src = 100; unsigned int dst = 7; unsigned int out; out = my_div(&src,dst); printf("out:= %d \nsrc:= %d" 阅读全文
posted @ 2012-03-29 10:29 zhuangzhuang1988 阅读(596) 评论(1) 推荐(0) 编辑