- 博客(33)
- 资源 (36)
- 收藏
- 关注
原创 【FPGA】FIFO的Verilog设计之同步FIFO的设计
这个同步FIFO的设计方法是调用异步读写双端口RAM来实现的。关于异步读写双端口RAM的设计,前面博文已经讲到过了:【FPGA】双端口RAM的设计(异步读写)此时使用双端口RAM来设计FIFO,可以使用一套端口进行写操作,一套端口进行读操作的方式来实现,例如例化方式大概是这样的:ram_dp_ar_aw #(DATA_WIDTH,ADDR_WIDTH) DP_RAM (.addre...
2019-05-30 23:05:53 5949 2
原创 【FPGA】ROM/EPROM的设计(使用case的方式初始化)
上篇博文:【FPGA】ROM/EPROM的设计(使用加载文件的方式初始化),提到了这篇博文中要用的方式初始化ROM,在代码中用case语句的方式,给一个地址,给一个数据。很容易,通过异步的方式来给出代码设计:`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////...
2019-05-29 15:25:23 2321
原创 【FPGA】ROM/EPROM的设计(使用加载文件的方式初始化)
这篇博文开始讲ROM,在FPGA中的ROM可以同过加载文件的方式初始化ROM(就像定制IP核时加载coe文件),也可以通过case的方式在代码中进行初始化,这篇博文讲通过加载文件的方式初始化ROM,之后通过仿真读出来数据,看看是否成功。Verilog描述:`timescale 1ns / 1ps//////////////////////////////////////////////...
2019-05-29 11:21:15 3598 1
原创 【FPGA】双端口RAM的设计(异步读写)
上篇写了双端口RAM设计(同步读写):https://blog.csdn.net/Reborn_Lee/article/details/90647784关于异步读写和同步读写,在单端口RAM设计中也提到过:https://blog.csdn.net/Reborn_Lee/article/details/90646285这里就不再叙述了,总之就是和时钟无关了。下面我们同样会给出Veril...
2019-05-28 23:07:55 7816 2
原创 【FPGA】双端口RAM的设计(同步读写)
之前的博文都是讲单端口RAM的,它们仅有一套控制输入,例如cs,we,oe,还有数据总线以及地址。【FPGA】单端口RAM的设计(同步读、同步写)附上太多链接,我也累,自己找吧。双端口RAM,顾名思义,有两套地址,数据总线,以及cs等。从输入输出也可以看出来:input clk , // Clock Inputinput [ADDR_WIDTH - 1 : 0]...
2019-05-28 22:40:11 12660
原创 【FPGA】单端口RAM的设计(异步读、异步写)
前面有博文写了同步读写和异步读、同步写的单端口RAM设计:【FPGA】单端口RAM的设计(同步读、同步写)【FPGA】单端口RAM的设计(异步读、同步写)这篇博文讲异步读写:在博文:【FPGA】单端口RAM的设计(异步读、同步写)中已经对异步读与同步读进行了比较,这篇博文要对同步写和异步写做一个比较:首先是代码上的区别:易知,所谓异步写,也就是不依赖于时钟的写,只要给一个地址,...
2019-05-28 20:42:04 4604
原创 【FPGA】单端口RAM的设计(异步读、同步写)
上篇博文讲到了:单端口同步读写RAM的设计,那里对RAM的读写采用的是同步的方式,也就是和时钟同步,读写都依赖于时钟。这篇博文,我们的写依然是同步的,但是读是异步的,所谓的异步就是指不依赖于时钟,这点我们在后面的代码设计中可以清晰的看出。截取出来:// Memory Read Block// Read Operation : When we = 0, oe = 1, cs = 1...
2019-05-28 17:31:12 4597 1
原创 【FPGA】单端口RAM的设计(同步读、同步写)
Single Port RAM Synchronous Read/Write这篇博文介绍单端口同步读写RAM,在之前的博文中,也介绍过类似的设计:【Verilog HDL 训练】第 13 天(存储器、SRAM)在这篇博文中,与知识星球里的伙伴们交流,真是让我受益匪浅呀。单端口同步读写RAM的设计没什么可描述的,代码不麻烦,看起来最为清晰:输入输出://-----------...
2019-05-28 15:13:43 9688 8
原创 如何使用RS-232发射器和接收器?
目录前言设计一设计二(回环)设计二(回环)测试前言前面讲到了波特率的产生,发射器以及接收器:RS232 波特率时钟产生方法?RS-232 TransmitterRS-232 Receiver如何把这些模块链接起来,实现一些功能呢?这篇博文就是干这个事情的。参考链接:https://www.fpga4fun.com/SerialInterface5.h...
2019-05-28 12:29:31 2422
原创 RS-232 Receiver
上篇博文讲到了RS-232 Transmitter,这篇博文讲RS-232 Receiver.如下Receiver示意图:我们的实现是这样的:该模块在RxD线路上组装数据。当接收到一个字节时,它出现在“数据”总线上。 一旦收到完整的字节,“data_ready”就会被置位一个时钟。请注意,“data”仅在“data_ready”被声明时有效。 剩下的时间,不要使用它,因为新的数...
2019-05-27 16:16:55 1660
原创 Verilog中的条件编译语句 `ifdef、`else、`endif 等
今天在参考大佬的RS232 Receiver的时候,用到了`ifdef指令,我虽知道它是条件编译指令,但是内容已经忘了差不多了,也不敢胡乱猜测。今天趁此机会总结一下:一般情况下,Verilog HDL源程序中所有的行都参加编译。但是有时候希望对其中的一部份内容只有在条件满足的时候才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足条件时对一组语句进行编译,当条件不...
2019-05-27 09:54:37 6907
原创 RS-232 Transmitter
目录串行化数据Verilog描述并仿真上篇博文讲到了如何产生波特率?(RS232 波特率时钟产生方法?)下面的内容是构建一个异步发送器:我们正在构建一个具有固定参数的“异步发送器”:8个数据位,2个停止位,无奇偶校验。它的工作方式如下:发送器在FPGA内部获取一个8位数据并将其串行化(从“TxD_start”信号置位时开始)。在发生传输时断言“忙”信号(在此期间忽...
2019-05-26 17:29:30 1355
原创 RS232 波特率时钟产生方法?
目录方法一方法二波特率参数化产生方法上篇博文介绍了:RS232接口是如何工作的?讲到了该接口的传输速率,也就是波特率可以为:1200 bauds. 9600 bauds. 38400 bauds. 115200 bauds (usually the fastest you can go).在这里,我们希望以最大速度使用串行链路,即115200波特(较慢的速度也很容易...
2019-05-25 23:29:52 4220
原创 RS232接口是如何工作的?
RS232简介RS232是个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口。通常 RS-232 接口以9个引脚(DB-9) 或是25个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组 RS-232 接口,分别称为 COM1 和 COM2。串行接口是将FPGA连接到PC的简单方法。 ...
2019-05-25 18:44:09 3955
原创 【Verilog HDL 训练】第 14 天(glitch-free的两个时钟切换电路)
2019年5月13日glitch-free的两个时钟切换电路。可以看到这是一个星期之前的题目了,现在才抽空做,把这篇颠倒个顺序吧,也是最后一天了,以后的题目都是讨论性质的,不会以第多少天的形式来写了。这个题目是设计一个时钟切换电路,且使得切换过程中没有毛刺产生。为了理解无毛刺的时钟切换电路,先讨论下时钟切换时产生毛刺的原因:有毛刺的时钟切换电路如下原理图1a:图1a...
2019-05-20 21:19:57 7686 2
原创 【Verilog HDL 训练】第 13 天(存储器、SRAM)
存储器。1. rom,ram,flash,ddr,sram,dram,mram..列举并解释一下这些名词。 2. 用verilog实现一个深度为16,位宽8bit的单端口SRAM。搭建一个仿真环境,完成初始化,读取,写入的操作。 3. 接第2题,如果同时对一个地址进行读和写操作,会怎样?实际中应该如何处理?4. 使用单端口SRAM构造一个双端口同步FIFO。解答:1. ro...
2019-05-18 18:11:09 10324 4
转载 // synopsys_translate_off,parallel_case 和 full_case
下面这段话是在别人的博文下引导语句“// synopsys translate_off”找到的,它针对的是综合软件Synopsys:以前一直没弄懂,以为就是个简单的注释完事,原来还可以用来引导综合过程:设计者在写设计代码时,有时可能针对仿真写一些语句,这些语句可能是不为DC所接受,也不希望DC接受;设计者如果不对这些语句进行特殊说明,DC读入设计代码时就会产生语法错误。另一种情况是...
2019-05-18 14:07:25 2373
原创 算术运算的RTL代码规则总结
这篇博文是上篇博文:【Verilog HDL 训练】第 12 天(数据通路)的指导规则。对有符号数以及无符号数运算的一些指导规则。注:英文为原文,中文为个人认为重要的总结。1. Signed Arithmetic• Rule: Use type 'signed' (VHDL, Verilog 2001) for signed/2's complement arithmetic (d...
2019-05-16 11:03:52 5293 2
原创 【Verilog HDL 训练】第 12 天(数据通路)
数据通路。y = func(a,b)func可以是加法,减法,乘法,比较,移位,舍入,饱和等。分别针对有符号数,无符号数的情况。 提示:可以参考synopsys的一篇文档 https://t.zsxq.com/QF6QNju加法:对于无符号数而言:module arithmetic( input [3:0] a, input [3:0] b, o...
2019-05-15 23:07:06 2540
原创 【Verilog HDL 训练】第 11 天(分频电路)
设计一个占空比50%的三分频电路。针对这个分频器,博文的末尾会给出一个反面教材,这是我上次写的一个分频器,看起来很好,其实是不能综合的。针对其中的错误,我令立博文记录之:【 Verilog 】always@()的敏感源中为什么不能双边沿触发?为什么不能双时钟触发?感谢学习道路上的前辈给予的指导:下面的分频器思路是:画了个草图:给出Verilog HDL描述:modul...
2019-05-15 16:21:48 5585 3
原创 【 Verilog 】always@()的敏感源中为什么不能双边沿触发?为什么不能双时钟触发?
最近用Verilog HDL设计了一个小电路,一个3分频的电路,用的是我刚接触FPGA时,别人告诉我的思路,没想到今天才发现有大问题?如下:module Freq_divide( input clk, input rst_n, output reg clk_divide ); wire clk_reverse; assign clk_reverse = ~clk;...
2019-05-15 15:47:25 17505 9
转载 SPI 2 - A simple implementation
ARM processorTo get an opportunity to test our newly acquired SPI knowledge, we use aSaxo-Lboard. It has an ARM7 processor (LPC2138) and a Cyclone FPGA (EP1C3), connected by a SPI bus.The ARM is...
2019-05-09 09:56:10 1331
原创 【Verilog HDL 训练】第 10 天(PWM 呼吸灯)
5月8日PWM用verilog实现PWM控制呼吸灯。呼吸周期2秒:1秒逐渐变亮,1秒逐渐变暗。系统时钟24MHz,pwm周期1ms,精度1us。今天的题目我是第一次见,答案借鉴大神的:Verilog没有葵花宝典打卡day10.md简述PWMPWM——脉宽调制信号(Pulse Width Modulation),它利用微处理器的数字输出来实现,是对模拟电路控制的一种非常有效的技术...
2019-05-08 20:59:19 3898 3
原创 边沿检测与信号同步?
关于边沿检测,之前写过的博文不下于3篇了,个人感觉是十分重要的。今天重新来谈边沿检测,是对边沿检测的一个认识的提升,同时提出自己的疑问?最后提出自己的观点,以及给出其一个简单应用,通过实践,可以看出边沿检测可以对信号进行同步(本测试,用的是慢时钟信号)。下面是具体笔记:边沿检测的学问当然,如果不方便观看,可以下载pdf文档观看:边沿检测参考文献:https://www.f...
2019-05-08 17:09:46 2231
转载 SPI 1 - What is SPI?
SPI is a simple interface that allows one chip to communicate with one or more other chips.How does it look?Let's start with a simple example where only two chips have to communicate together.SP...
2019-05-08 14:52:49 1321
原创 【Verilog HDL 训练】第 09 天(按键消抖)
5月7日按键防抖1. 用verilog实现按键抖动消除电路,抖动小于15ms,输入时钟12MHz。在编写Verilog代码之前,先分析下一些前提问题,首先是几个按键(1个,多个),我们以1个和三个为例;其次是算下按键按下后计数多少后,采样按键值,这个需要简单的运算:输入时钟为12MHz,也就是大约80ns的周期,那么去除15ms的抖动,需要计数多少次呢?经过计算,大约18000...
2019-05-07 19:59:02 6292 8
原创 【Verilog HDL 训练】第 08 天(二进制、Johnson、环形计数器)
5月6日计数器 1. 用verilog实现一个4bit二进制计数器。a) 异步复位b) 同步复位input clk, rst_n; output [3:0] o_cnt;Verilog实现代码:module count_2( input clk, input rst_n, output reg [3:0] o_cnt) always @ ...
2019-05-06 15:40:44 4025 3
原创 Verilog 中的 function
函数的目的是返回一个用于表达式的值。定义函数的语法:function <返回值的类型或范围>函数名; <端口说明语句> <变量类型说明语句> begin <语句> ... endendfunction在这里,<返回值的类型或范围>可以不定义,如果默认则代表...
2019-05-04 15:10:03 22304 5
转载 Verilog 中的 ^ 的用法
复习函数和任务中总遇到^,让我疑惑,cal_parity = ^address;这个不是异或吗?怎么可以这么用呢?难道意思是:cal_parity = cal_parity ^ address(类似于C语言),事实还真不是!这里就来总结下^的用法:(1)奇偶判断^a操作就是将a中的每一位按位逐一进行异或,例如a=4'b1010,则b=1^0^1^0=0,由此可以判断a中为1...
2019-05-04 15:07:09 40459
原创 Verilog 中的移位(算术移位, 逻辑移位, 循环移位)
(1)>>>(算术右移)与>>(逻辑右移)的区别:逻辑右移就是不考虑符号位,右移一位,左边补零即可。算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1,;否则,就补0。所以算术右移也可以进行有符号位的除法,右移,n位就等于除2的n次方。例如,8位二进制数11001101分别右移一位。逻辑右移就是[0]1100110算术右移就是[1]1100110...
2019-05-04 14:57:21 98054 13
转载 Verilog中的二维数组及其初始化
Verilog中的二维数组Verilog中提供了两维数组来帮助我们建立内存的行为模型。具体来说,就是可以将内存宣称为一个reg类型的数组,这个数组中的任何一个单元都可以通过一个下标去访问。这样的数组的定义方式如下:reg [wordsize : 0] array_name [0 : arraysize];例如:reg [7:0] my_memory [0:255];其中...
2019-05-04 00:00:13 33991 3
原创 Verilog系统函数(一) $display
Verilog系统函数$display参考:FPGA篇(四)Verilog系统函数介绍($display,$fopen,$fscanf,$fwrite($fdisplay),$fclose,$random,$stop)下面代码截自仿真文件部分: reg flag;//-----------------------------------------------------...
2019-05-03 23:48:21 27263 4
原创 【Verilog HDL 训练】第 07 天(串并转换)
串并转换1. 复习verilog语法【选做题】- 文件操作fopen fdisplay fwrite fclose- 生成随机数 random- 初始化 readmemh readmemb - finish stop这几个我真没用过,先给一个优秀的链接:FPGA篇(四)Verilog系统函数介绍($display,$fopen,$fscanf,$fwrite($fdispl...
2019-05-03 17:49:25 3870 2
反馈清零以及反馈置数计数器(内含Verilog HDL代码及文档)
2018-05-19
模60计数器(通过计数器级联得到)
2018-05-19
数字时钟计数器(包含代码及说明文档)
2018-05-19
乘法器的verilog HDL设计汇总
2018-05-15
移位相加乘法器的verilog HDL设计代码
2018-05-15
串行乘法器verilog HDL设计代码
2018-05-15
查表法乘法器verilog HDL设计代码及其测试文件
2018-05-15
复数乘法器的verilog HDL设计代码及其测试文件(修改版)
2018-05-15
向量乘法器的verilog HDL设计代码及其测试文件(修改版)
2018-05-15
复数乘法器的verilog HDL设计代码
2018-05-14
Wallace树乘法器专题研究
2018-05-14
Wallace树乘法器verilog代码
2018-05-14
数字频率计verilog代码
2018-05-05
chapter2_clocks_resets
2020-06-10
AN10007-Jitter-and-measurement
2020-06-10
Best-FPGA-Development-Practices-2014-02-20
2020-06-10
aurora_8b10b_0_ex_framing.7z
2020-05-14
aurora streaming工程例子程序.zip
2020-05-13
KC705.rar压缩包
2019-12-31
Spartan-6 Libraries Guide for HDL Designs
2018-08-11
西电数值分析ppt合集
2018-07-12
数值分析总览
2018-06-28
8421BCD码计数器(内含文档及Verilog HDL设计代码)
2018-05-19
可逆计数器(内含文档及Verilog HDL设计代码)
2018-05-19
环形计数器、扭环计数器(内含文档及verilog HDL代码)
2018-05-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人