
Verilog
adream307
这个作者很懒,什么都没留下…
展开
-
四选一电路的几种写法
好久没更新blog了,今天写一个。内容是晚上和师兄讨论时想到的题目:用Verilog实现一个四选一电路第一种方法是最容易想到的,也是最简单的 module H( input [3:0] iA, input [1:0] iS, output reg oOut); always@( iS or iA)begi原创 2010-03-22 23:49:00 · 3922 阅读 · 0 评论 -
状态机与非状态机
Quartus 9.1 手册: Synthesis tools can recognize and encode Verilog HDL and VHDL state machines during synthesis. This section presents guidelines to ensure the best results when you use state machines. Ensuring that your synthesis tool recognizes a原创 2011-05-06 15:54:00 · 1128 阅读 · 0 评论 -
为什么必须写begin--end
always@(posedge V_CLK)begin if(iMode)begin if(iCapture)begin h_blank_bak原创 2011-05-07 15:59:00 · 1262 阅读 · 0 评论 -
积极确认的交互式通信约定
积极确认的交互式通信约定: 1、模块有两个用于通信应答及使能信号:iEN、oEN 2、在空闲状态时,输入信号iEN,输出信号oEN均为低电平 3、当外界向模块发生数据时,iEN置高电平,同时检测应答信号oEN是否为高电平 4、模块原创 2011-01-06 10:58:00 · 879 阅读 · 0 评论 -
用verilog实现的串口通信模块
github地址:git://github.com/adream307/uart.git串口功能:1、8个数据位、1个停止为、无校验位2、空闲时数据线为高电平,从高电平跳向低电平表示启动信号3、波特率可以通过parameter参数实现可调 有两个文件:UART.v 串口模块module UART( //***********全局时钟复位信号*********原创 2012-02-06 20:54:56 · 10374 阅读 · 1 评论 -
[Ubuntu][64bit]Linux下的Verilog仿真-1
github: git://github.com/adream307/iverilogTest.git1.使用 iverilog 编译2.使用 vvp 运行仿真程序3.使用 gtkwave 观察仿真波形注意事项:使用 gtkwave 观测仿真波形,必须生成 lxt文件,那么在测试脚本(tb.v)中必须使用 $dumpfile, $dumpvars, $dumpflush原创 2012-06-23 15:25:40 · 4616 阅读 · 1 评论 -
[signed][input]Verilog的有符号数输入测试
git://github.com/adream307/signedTest.git一直错误得以为Verilog中的数据是无符号的。测试脚本,在QuartusII中成功编译,且下载在硬件上运行。//SIG.vmodule SIG( iCLK, oSY, oUY);input iCLK;output [7:0] oSY;output [7:0] oUY;reg [7:原创 2012-07-13 21:13:17 · 3079 阅读 · 0 评论 -
[verilog]用文件初始化ROM
`timescale 1ps/1ps/*从文件中读入ROM的值2013-4-14*/module FILEROM( iCLK, iRST_N, iREAD, iADDR, oDATA);parameter DATA_WIDTH=8; //数据位宽parameter ADDR_WIDTH=8; //地址位宽parameter ADDR_START=0; //地址原创 2013-04-14 19:44:27 · 6683 阅读 · 0 评论 -
用文件初始化RAM
`timescale 1ps/1ps/*从文件中读入RAM的值2013-4-14*/module FILERAM( iCLK, iRST_N, iREAD, iADDR, oDATA, iWRITE, iDATA);parameter DATA_WIDTH=8; //数据位宽parameter ADDR_WIDTH=8; //地址位宽parameter AD原创 2013-04-14 23:06:40 · 1562 阅读 · 0 评论 -
用文件初始化FIFO
`timescale 1ps/1psmodule FILEFIFO( iCLK, iRST_N, iREAD, oDATA, iWRITE, iDATA);parameter DATA_WIDTH=8; //数据位宽parameter DATA_LENGTH=256; //FIFO深度parameter FILE_NAME="file.txt";input iCLK原创 2013-04-14 23:07:38 · 1675 阅读 · 0 评论 -
用文件初始化FIFO2
`timescale 1ps/1psmodule FILEFIFO2( iCLK, iRST_N, iREAD, oDATA, iWRITE, iDATA, oCOUNT);parameter DATA_WIDTH=8; //数据位宽parameter DATA_LENGTH=256; //FIFO深度parameter COUNT_LENGTH=8;paramet原创 2013-04-21 21:50:17 · 941 阅读 · 0 评论 -
USB-Blaster--名称已用作服务名或服务显示名
http://donnerys.net/blog/archives/309 http://blog.youkuaiyun.com/smartic/archive/2008/11/24/3359665.aspx 电脑上原有 quartus8.0 后将其卸掉,改装 quartus 9.0 在更新 USB Blaster 驱动时出现 “名称已用作服务名或服务显示名”的错误而无法更新 USB-Blaster 驱动 解决方法如下: 1、在运行内输入 regedit 打开注册表编辑器 2、点击原创 2011-05-01 18:33:00 · 4671 阅读 · 0 评论 -
ModelSim远程桌面
http://bbs.eetop.cn/viewthread.php?tid=258366 这是因为floating license和node-lock license的区别导致的。 如果你不想遇到这样的问题,最简单的办法,就是你在台式机上先打开,然后再远程,就没有问题了。 否则,就去装另一种license。原创 2011-05-01 13:43:00 · 2336 阅读 · 0 评论 -
与非门实现硬件乘法器
<br />基本思想:对于两个一位的数a、b的和<br />低位 sum=a^b<br />向高位的进位 carry=a&b<br /> <br />代码如下<br />/*<br />四位无符号数硬件乘法器<br />2010-9-27<br />CYF<br />multi_4.v<br />*/<br />module multi_4(<br /> input [3:0] x,<br /> input [3:0] y,<br /> output [7:0] mul<br />);<br />wire原创 2010-09-27 20:54:00 · 2614 阅读 · 0 评论 -
USB-Blast下载线错误
<br />AS下载正常<br />JTAG下载正常<br />但是Signal Tap II出现错误:<br />instance not find;can't find the instance.Download a design with SRAM object File containing this instance<br />解决方法:<br />更换下载线原创 2010-12-13 18:04:00 · 3781 阅读 · 2 评论 -
quarusII脚本
<br />详见:Quartus II Handbook -- Volume2 -- Scripting and Constraint Entry<br />因为某些特殊需求,想要在不打开quartusII的前提下实现FPGA程序下载,可以通过如下命令实现:<br />quartus_pgm -c "USB-Blaster [USB-0]" -m JTAG -o p;soc_demo.sof<br />将soc_demo.sof下载到FPGA内原创 2010-12-14 15:31:00 · 1022 阅读 · 0 评论 -
SPI Slave端口及测试代码
//SPI_SLAVE.v //SPI从端接口 //SPI的数据线上,高位数据先发 //2010-12-20 /* SPI从模块接受端 在iCS_N为低电平时,每一个iSCLK信号上升沿到来时,从iMOSI端口接受一位数据 当接收一个字节的数据后,oDATA端口输出数据,同时oEN置高电平,表示当前oDATA端口的数据为有效数据 */ module SPI_SLAVE( iCLK, //全局时钟 iRST_N, //原创 2010-12-21 11:04:00 · 5517 阅读 · 0 评论 -
function 与 task
`timescale 1ns/1ps //函数测试 //2011-1-8 module tb3; reg clk; integer i; initial begin i=0; end initial begin clk=0; forever begin #10; clk=~clk; end end task task_test; begin @(neg原创 2011-01-08 22:01:00 · 731 阅读 · 0 评论 -
verilog读写文件测试
module file_test(); integer fp,ret,i; reg [7:0]x[7:0]; reg [63:0] t; reg [7:0] tx; initial begin fp=$fopen("file.txt","w"); $fdisplay(fp,"#"); $fwriteb(fp,8'h0F); $fdisplay(fp,""); $fwriteb(fp,8'hF0)原创 2011-03-08 16:22:00 · 6488 阅读 · 0 评论 -
HDL编程使用verilog代码而非逻辑框图的原因--持续更新
1、如果你的代码是用框图搭的,就算仅仅是顶层模块是用框图搭的,虽然看上去视乎暂时觉得比较直观,用逻辑框图搭的一个致命弱点在于代码的持续更新。当你的设计不断更新变大变复杂之时,逻辑框图无法提供一个有效的稳健的持续更新手段,最后的结果只能是惨不忍睹。 2、如果别人需要在你的代码集成之上添加新的功能,逻辑框图就更杯具了。。。 3、逻辑框图的网络标号可以是 “15V_IN” 这类以数字打头的东东,但是这个在代码里是不允许的,所有变量及标号必须是字母或下划线打头原创 2011-03-07 14:13:00 · 1061 阅读 · 0 评论 -
Verilog乘法
reg [15:0] m1; reg [15:0] m2; reg [31:0] d; 无符号乘法: d #include int main() { printf("%X/n",-1*7); printf("%X/n",0xFFFFFFFF*7); printf("%d/n",-1*7); printf("%d/n",0xFFFFFFFF*7); printf("Hell原创 2011-04-06 10:41:00 · 6306 阅读 · 0 评论 -
关于Signal tap II 调试--很重要
用Signal tap II 调试模块时,一定要把模块的时钟信号引出来,这个很重要,已经犯两次错误了!!!原创 2011-06-18 23:00:00 · 1509 阅读 · 0 评论 -
具有超时返回功能的状态机--计数器超时等效于同步复位功能
//具有超时返回功能的状态机 //计数器超时等效于同步复位功能 localparam CNT_OVER=32'hFFFFFFFF; //计数器溢出值 localparam CNT_STEP=32'h1; //计数器步进 localparam CNT_START=32'h0; //计数器初值 reg [31:0] count; //计数器,当其溢出时,表示超时,返回状态0 assign wCountOver = count ==原创 2011-05-01 10:52:00 · 1946 阅读 · 0 评论 -
[verilog]如何在modelsim中使用PLI功能
代码如下:https://github.com/adream307/PLITest.gitmodelsim中的PLI功能,使得用于可以用C语言编写自己的函数,然后在modelsim中想调用系统函数一样调用用户定义的函数。在这个例子中,用户自定义函数实现简单的8位有符号数相加的功能,代码如下://test_pli.c#include"veriuser.h"#include"ac原创 2013-11-23 17:19:02 · 3836 阅读 · 1 评论