随笔分类 - VHDL&Verilog HDL
摘要:本文来自:我爱研发网(52RD.com) - R&D大本营详细出处:http://www.52rd.com/Blog/Archive_Thread.asp?SID=7179spinlock的设计和实现作者:admin在Linux的内核中,spin lock用在多处理器环境中。当一个CPU访问一个临界资源 (critical section)的时候,需要预先取得spin lock,如果取不到的话,它就在空循环 等待,直到另外的CPU释放spin lock。由于涉及到多个处理器,spin lock的效率非常重要。 因为在等待spin lock的过程,处理器只是不停的循环检查,并不执行其他指
阅读全文
摘要:- 查阅了很多资料,无意中看到有篇文章提到,要仿真成功这个IP的话,需要以下三个Library:220model、Altera_mf,还有个最最关键的就是sgate! 另外还有一点需要注意的是,在用modelsim仿真时,在compile的时候,需要把.v、.vo和.tb这3个文件都加上才可以,否则在simulate时会提示错误。 几个简单的系统任务,$readmemb,$readmemh,$fopen,$fdisplay;基本上就可以完成对文件的读写操作。用于读写的文件必须和modelsim建好的工程放在同一个文件夹中,否则会出现打不开文件的现象,即返回的文件句柄为0.摆放位置如下图所示。一
阅读全文
摘要:谓定点小数,就是小数点的位置是固定的。我们是要用整数来表示定点小数,由于小数点的位置是固定的,所以就没有必要储存它(如果储存了小数点的位置,那就是浮点数了)。既然没有储存小数点的位置,那么计算机当然就不知道小数点的位置,所以这个小数点的位置是我们写程序的人自己需要牢记的。先以10进制为例。如果我们能够计算12+34=46的话,当然也就能够计算1.2+3.4或者0.12+0.34了。所以定点小数的加减法和整数的相同,并且和小数点的位置无关。乘法就不同了。12*34=408,而1.2*3.4=4.08。这里1.2的小数点在第1位之前,而4.08的小数点在第2位之前,小数点发生了移动。所以在做乘法的
阅读全文
摘要:转自:http://www.cnblogs.com/sunev/archive/2012/05/17/2506731.html一、摘要 DE2_TV中,有关于寄存器的配置的部分,采用的方法是通过IIC的功能,这里对IIC总线的FPGA实现做个说明。二、实验平台 软件平台:ModelSim-Altera 6.4a (Quartus II 9.0) 硬件平台:DIY_DE2三、实验原理1、IIC总线器件工作原理 在IIC总线上传送信息时的时钟同步信号是由挂接在SCL时钟线上的所有器件的逻辑“与”完成的。SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟信号变为低电平,将使...
阅读全文
摘要:转自:http://www.cnblogs.com/sunev/archive/2012/05/21/2512149.html一、摘要 对DE2_TV例程做了分析,并阐明了相关概念。二、实验平台 硬件平台:DIY_DE2 软件平台:Quartus II 9.0三、一些概念及说明1、PAL和NTSC的区别 常见的电视信号制式是PAL和NTSC,另外还有SECAM等。NTSC即正交平衡调幅制,PAL为逐行倒像正交平衡调幅制。(1)PAL电视标准 PAL电视标准,每秒25帧,电视扫描线为625线,奇场在前,偶场在后,标准的数字化PAL电视标准分辨率为720*576, 24比特的色彩位深,画...
阅读全文
摘要:PAL制TV_VGADE2光盘的例子DE2_TV是NTSC制式的,如何在原有的基础上改成PAL制式的?主要是两个部分,修改ADV7181内部寄存器的值和VGA时序。一、PAL制式ADV7181寄存器的值如下,根据I2C协议将其写进芯片。SET_VIDEO+0:LUT_DATA<=16'h0080;// Force PAL input only mode.SET_VIDEO+1:LUT_DATA<=16'h0701;// Enable PAL autodetection only.SET_VIDEO+2:LUT_DATA<=16'h1001;// Slo
阅读全文
摘要:【笔记】如何Real Time产生灰阶影像?(de2)(de2-70)(真OO无双博文)1.至於怎樣才是正統的RGB轉灰階演算法呢?基本上這已經可以發論文討論了,一般來說,較讓大部分人所接受的公式是Gray=0.299*R+0.587*G+0.114*B這牽涉到浮點運算,不要說硬體難實現,光用C去寫,執行速度也很不理想,所以才會有人乾脆用(R+G+B)/3來做。若要在硬體實現,勢必再做一些簡化。注意到R、G、B的權重嗎?G的權重幾乎是R的2倍,B的權重的5倍,所以真正決定灰階程度的關鍵在於G,而R、B的影響較不顯著,所以乾脆就用G來代表灰階,這種方式最有利於硬體實現。2.SDRAM是VGA的f
阅读全文
摘要:module vga_driver( input clk_vga, // VGA像素时钟input rst_n, // 异步复位信号input [15:0] vga_data,output [15:0] vga_rgb, // 接收要显示的色彩output reg vga_hs, // VGA管脚 行同步output reg vga_vs, // VGA管脚 场同步output [10:0] x_pos, // 像素横坐标位置 output [9:0] y_pos // 像素纵坐标位置 );/* | 显示 |前沿|同步|后沿| 显示 ...
阅读全文
摘要:rt,什么是向量部分选择呢?verilog-2001 LRM中有这么一句话:对于a[8*i+:8],this is the so-called "Indexed vector part selects" 。在Verilog-1995中,可以选择向量的任一位输出,也可以选择向量的连续几位输出,不过此时连续几位的始末数值的index需要是常量。vect[msb_expr : lsb_expr]; //其中msb_expr和lsb_expr必须是常量表达式。而在Verilog-2001中,可以用变量作为index,进行part select。[base_expr +: width
阅读全文
摘要:1. 状态机的基本概念数字系统分两大类FSM:Moore和Mealy。FSM是用来表示有限个状态之间转移和动作等行为。1.2 Moore状态机Moore FSm由Edward F. Moore 提出。特点是输出只由当前状态确定,与输入没有关系。Moore FSM状态图中每一个状态都包含一个输出信号。一旦当前状态改变几乎会立即导致输出改变。Moore FSM输出在时钟脉冲的有效边沿后的有限个门延迟之后才会达到稳定值,Moore最大的特点是将输入和输出信号隔离开来。图1 Moore 状态机示意图1.3 Mealy状态机 Mealy FSM是由G.H.Mealy在1951年提出来的,输出和当前状态.
阅读全文
摘要:http://bbs.ednchina.com/BLOG_ARTICLE_53109.HTM时序电路的状态是一个状态变量集合,这些状态变量在任意时刻的值都包含了为确定电路的未来行为而必需考虑的所有历史信息状态机采用VerilogHDL语言编码,建议分为三个always段完成。三段式建模描述FSM的状态机输出时,只需指定case敏感表为次态寄存器, 然后直接在每个次态的case分支中描述该状态的输出即可,不用考虑状态转移条件。三段式描述方法虽然代码结构复杂了一些,但是换来的优势是使FSM做到了同步寄存器输出,消除了组合逻辑输出的不稳定与毛刺的隐患,而且更利于时序路径分组,一般来说在FPGA/CP
阅读全文
摘要:(转自:真OO无双)http://www.cnblogs.com/oomusou/archive/2008/02/11/1066839.htmlAbstractVerilog雖然為硬體描述語言,亦提供讀取/寫入文字檔的功能。Introduction為什麼需要用Verilog讀取/寫入文字檔呢?主要用在寫Testbench,並且有兩個優點:1.資料處理的個數不需寫死在Testbench內。2.文字檔可以用其他更強大的語言產生,如C/C++、Python。3.將資料輸出到文字檔後,可用其他語言分析,如C/C++、Python、Excel。Verilog1/* 2 (C) OOMusou 2008
阅读全文
摘要:http://www.cnblogs.com/dangxia/archive/2012/03/10/2389685.html今天看代码时遇到了integer,只知道这是个整数类型,可详细的内容却一窍不通,查看了资料---《verilog数字VLSI设计教程》。其中是这么写到的:大多数的矢量类型(reg或者net)都被默认当做无符号数。integer和real是个例外,它们被默认为当做有符号数。通常,real类型是不可综合的。假设在没有溢出的情况下,不管是无符号数还是有符号数,它们都是二进制的一串数值而已;而当这个值被当做某种类型比较时:又符号数的MSB被用来表示这个数字的符号,而无符号数的MS
阅读全文
摘要:1.打开文件 integer file_id; file_id = fopen("file_path/file_name");2.写入文件:$fmonitor,$fwrite,$fdisplay,$fstrobe //$fmonitor只要有变化就一直记录 $fmonitor(file_id, "%format_char", parameter); $fmonitor(file_id, "%m: %t in1=%d o1=%h", $time, in1, o1);//$fwrite需要触发条件才记录 $fwrite(file_id,
阅读全文
摘要:在verilog中有$readmemh(“filename”, mem_name)命令,在使用这个命令时,”filename”中的路径要用反斜杠’/’,而不是斜杠’\’。如$readmemh("F:/mydesigen/re_input.txt",re_input);上面的语句是正确的,而如果用斜杠就有问题,如$readmemh("F:\mydesigen\re_input.txt",re_input);对于需要的txt文件,其格式为每行一个数据,例如用matlab产生文件则可以这样写fid0 = fopen('F:\mydesigen\re_i
阅读全文
摘要:原文出处http://www.cnblogs.com/carl_yy/archive/2010/09/10/1823522.html计算器 module calculator( num, num_decp, num_dec, num_sig, cal, enter, result_int, ...
阅读全文