随笔分类 -  Verilog

在vcs中编译及运行测试E203例子
摘要:E203的Makefile默认是调用 iverilog编译rtl,我们可以做如下修改,使其支持vcs编译。1. 首先修改e200_opensource/tb/tb_top.v, 增加dump波形的两行代码,这样如果指定DUMPWAVE不等于0,就会打印dump出波形文件。 initial begin $value$plusargs("DUMPWAVE=%d",dumpwave)... 阅读全文

posted @ 2019-08-23 13:00 迈克老狼2012 阅读(3276) 评论(2) 推荐(0) 编辑

Verilog设计Valid-Ready握手协议
摘要:http://ninghechuan.com/2019/01/17/Verilog%E8%AE%BE%E8%AE%A1Valid-Ready%E6%8F%A1%E6%89%8B%E5%8D%8F%E8%AE%AE/ Handshake Protocol握手协议: 为了保证数据传输过程中准确无误,我们需要加上握手信号来控制信号的传输。握手协议的原则是:当Valid和Ready信号同时高有效... 阅读全文

posted @ 2019-08-13 13:42 迈克老狼2012 阅读(8715) 评论(0) 推荐(1) 编辑

E203 译码模块(1)
摘要:E203是两级流水线结构,第一级是IFU进行取指操作,第二级包括译码、执行、交付和写回等功能。架构图如下: https://www.cnblogs.com/images/cnblogs_com/mikewolf2002/1519640/o_pipeline.jpg 译码模块就是把机器码翻译成对应的输出功能。E203支持RV32IMAC,它的译码器模块是纯的组合电路实... 阅读全文

posted @ 2019-08-01 09:56 迈克老狼2012 阅读(2561) 评论(0) 推荐(0) 编辑

蜂鸟E203 IFU模块
摘要:E203的IFU(instruction fetch unit)模块主要功能和接口如下:IFU的PC生成单元产生下一条指令的PC。该PC传输到地址判断和ICB生成单元,就是根据PC值产生相应读指请求,可能的指令目的是ITCM或者外部存储,外部存储通过BIU访问。该PC值也会传输到和EXU单元接口的PC寄存器中。取回的指令会放置到和EXU接口的IR(Instruction register)寄存器中... 阅读全文

posted @ 2019-07-29 11:24 迈克老狼2012 阅读(3537) 评论(1) 推荐(2) 编辑

E203 bypass buffer
摘要:如果fifo中没有数据,且有输入,则是bypass fifo,同周期内直接把输入数据转到输出数据。如果fifo中有数据,则读取fifo,成为普通的同步fifo。module sirv_gnrl_bypbuf # ( parameter DP = 8, parameter DW = 32) ( input i_vld, output i_rdy, i... 阅读全文

posted @ 2019-07-26 14:57 迈克老狼2012 阅读(1342) 评论(1) 推荐(1) 编辑

E203 同步fifo
摘要:1. 输入端, 输入信号, i_vld,表示输入请求写同步fifo,如果fifo不满,则fifo发送i_rdy 到输入端,开始写fifo。i_vld和i_rdy是写握手信号。2.输出端 o_rdy表示接受端已经准备好了,可以读取fifo,o_vld表示fifo准备好了,不为空,可以输出到接收端。o_rdy和o_vld是握手信号。3.如果fifo是深度为0,则是bypass模式... 阅读全文

posted @ 2019-07-26 10:47 迈克老狼2012 阅读(1409) 评论(0) 推荐(1) 编辑

在verilog中使用格雷码
摘要:格雷码的一些知识: https://baike.baidu.com/item/%E6%A0%BC%E9%9B%B7%E7%A0%81/6510858?fr=aladdin绿色框起来的是0--15的格雷码,用红线将格雷码分为上下两部分。通过观察格雷码相邻位每次只有1位发生变化,且上下两部分,除了最高位相反,其余位全都关于红线镜像对称,7 --> 8 ,格雷码从 0100 --> 1100 ,只... 阅读全文

posted @ 2019-06-04 11:31 迈克老狼2012 阅读(1522) 评论(0) 推荐(1) 编辑

同步fifo与异步fifo
摘要:参考以下帖子:https://blog.csdn.net/hengzo/article/details/49683707https://blog.csdn.net/Times_poem/article/details/51917648https://www.cnblogs.com/aslmer/p/6114216.htmlhttps://www.cnblogs.com/ylsm-kb/p/9068... 阅读全文

posted @ 2019-05-29 18:29 迈克老狼2012 阅读(5864) 评论(0) 推荐(1) 编辑

UART简介及与COM口的区别
摘要:原帖地址:https://blog.csdn.net/jirryzhang/article/details/70084743https://www.cnblogs.com/smartjourneys/p/7218390.html 阅读全文

posted @ 2019-04-23 10:07 迈克老狼2012 阅读(577) 评论(0) 推荐(0) 编辑

I2C总线协议图解
摘要:原帖地址:https://www.cnblogs.com/aaronLinux/p/6218660.html 阅读全文

posted @ 2019-04-23 10:02 迈克老狼2012 阅读(385) 评论(0) 推荐(0) 编辑

SPI协议详解
摘要:原帖地址:https://blog.csdn.net/weiqifa0/article/details/82765892 阅读全文

posted @ 2019-04-23 09:59 迈克老狼2012 阅读(373) 评论(0) 推荐(0) 编辑

JTAG基础知识
摘要:原帖地址:https://www.cnblogs.com/kingstacker/p/7454814.html1.什么是JTAG:Joint Test Action GroupJTAG是一种IEEE标准用来解决板级问题,开发于上个世纪80年代。今天JTAG被用来烧录、debug、探查端口。当然,最原始的使用是边界测试。边界测试:举个例子你有两个芯片,这两个芯片之间连接了很多很多的线,怎么确保这些线... 阅读全文

posted @ 2019-04-22 09:32 迈克老狼2012 阅读(5410) 评论(0) 推荐(1) 编辑

linux下的EDA——VCS使用
摘要:原帖地址:https://blog.csdn.net/moon9999/article/details/75283926在Linux下对verilogHDL进行功能仿真时非常必要的,下面提供两种常见方式:1.命令行方式1)新建文件夹vcs_test,将所有的工程文件与tb文件复制入,testbench中可以没有在脚本文件中添加的函数,一般的tb文件就可以。本例子中有三个文件:clk_half.v,... 阅读全文

posted @ 2019-04-17 15:12 迈克老狼2012 阅读(1914) 评论(0) 推荐(0) 编辑

FPGA基础之逻辑单元(LE or LC)的基本结构
摘要:原帖地址:https://blog.csdn.net/a8039974/article/details/51706906/ 逻辑单元在FPGA器件内部,是完成用户逻辑的最小单元。逻辑单元在ALTERA叫作(Logic Element,LE)LE,在XILNX中叫作LC(LOGIC CELL).逻辑单元与逻辑阵列 逻辑单元(Logic Element,LE)在FPGA器件内部,... 阅读全文

posted @ 2019-03-17 09:26 迈克老狼2012 阅读(3407) 评论(0) 推荐(1) 编辑

AHB总线协议(一)
摘要:1. 简介 AHB(Advanced High Performance Bus)总线规范是AMBA(Advanced Microcontroller Bus Architecture) V2.0总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、ASB (Advanced... 阅读全文

posted @ 2019-01-29 18:33 迈克老狼2012 阅读(19230) 评论(2) 推荐(1) 编辑

AXI总线介绍
摘要:原帖地址:https://wenku.baidu.com/view/7c424c17e3bd960590c69ec3d5bbfd0a7956d5b9.html 1、AXI简介 AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture... 阅读全文

posted @ 2019-01-26 08:52 迈克老狼2012 阅读(33508) 评论(0) 推荐(2) 编辑

Verilog 加法器和减法器(8)-串行加法器
摘要:如果对速度要求不高,我们也可以使用串行加法器。下面通过状态机来实现串行加法器的功能。 设A=an-1an-2…a0, B=bn-1bn-2…b0,是要相加的两个无符号数,相加的和为:sum=sn-1sn-2…s0。我们现在要设计一个电路,在时钟周期内处理一位相加的串行加法。加法过程一开始进行a0,b0的相加,在下一个时钟周期完成 a1,b1和第0位进位的相加,并依次完成所有的加... 阅读全文

posted @ 2019-01-23 15:24 迈克老狼2012 阅读(4240) 评论(0) 推荐(1) 编辑

状态机实例-寄存器拷贝
摘要:在计算机系统中,有大量的寄存器,用来保存运行过程中的数据。如果要交换两个寄存器的内容,则通常会使用第三个寄存器为临时寄存器的方法。比如,假设要交换寄存器R1,R2的内容,可以先将R2的内容传递到第三个寄存器R3,然后将R1的内容传到R2,最后将R3的内从传递到R1。 计算机系统的存储器通常是通过下图所示的内部网络互联的。除了与网络互联的信号线,每个寄存器还有两个控制信号,Rk... 阅读全文

posted @ 2019-01-20 13:19 迈克老狼2012 阅读(833) 评论(0) 推荐(0) 编辑

状态机状态最小化
摘要:对于有限状态机,如何实现用最少的状态实现所需的功能是重要的,因为这意味着可以减少表示状态的触发器的使用,从而降低FSM中组合电路的复杂性。如果FSM中的状态减少了,这意味着原始设计中存在一些等效状态。我们先看以下等效状态的定义: 当且仅当任意可能的输入序列,无论哪个状态作为起始状态,只要两个状态Si和Sj产生的输出序列相同,则认为两个状态Si和Sj是等效的。 下面我们来... 阅读全文

posted @ 2019-01-16 09:59 迈克老狼2012 阅读(1216) 评论(0) 推荐(0) 编辑

vcs+Makefile实现简单的testbench
摘要:网络上找的文章,实现了一遍。步骤如下:1. 创建verilog代码, 包括8位加法器代码和testbench代码。adder8.vmodule adder8 (input clk,input [7:0] a_i,input [7:0] b_i,output reg [8:0] c_o);always @ (posedge clk) beginc_o <= a_i + b_i;endendmodul... 阅读全文

posted @ 2019-01-09 15:24 迈克老狼2012 阅读(3702) 评论(0) 推荐(0) 编辑

导航