自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 VHDL 学习:仿真错误Unable to open msim.vcd Error.

今天在练习用VHDL描述串转并模块时,编译成功后准备用university progam vmf进行波形仿真时,发现了报错Unable to open msim.vcd Error。在网络上搜索后发现是因为实体中用了reg作为信号名,这似乎是个关键字,因此仿真的时候会出现错误。本来以为reg只是verilog中的关键字,看来以后信号、端口或者变量的命名还是要谨慎。

2023-04-20 02:46:48 384

原创 Verilog异步复位同步释放

Verilog异步复位同步释放

2022-09-11 07:50:54 131

原创 Verilog并串转换

FPGA,Verilog

2022-09-10 07:00:33 347

原创 VHDL学习-元件例化

在VHDL设计中,常需要将自己设计的子模块或者实体进行组合,设计复杂的数字电路。在quartus中既可以采用原理图设计方式,对设计实体进行连线,也可以采用VHDL程序实现,采用元器件例化语句。下面以一个利用两个四位加法器设计一个八位加法器的例子,介绍元件例化的方法。如下是四位加法器的代码,实体输入为四位的a、b两个端口、上一级进位信号cin,输出为四位的运算结果s以及进位信号cout。library ieee;use ieee.std_logic_1164.all;use ieee.std_logi

2021-07-03 11:11:47 7909 7

原创 VHDL学习-FIFO

FIFO( First Input First Output)简单说就是指先进先出。FIFO一般用于不同时钟域之间的数据传输。FIFO设计的难点在于空/满状态的判断。为了保证数据正确的写入或读出,而不发生溢出或读空的状态出现,必须保证FIFO在满的情况下,不能进行写操作。在空的状态下不能进行读操作。怎样判断FIFO的满/空就成了FIFO设计的核心问题。FIFO分为同步和异步两种,一般常用的为异步,即输入时钟与输出时钟不相同。FIFO的重要参数有宽度和深度,即FIFO一次读写操作的数据位和存储多少个位的数据。

2021-06-29 23:29:58 1226 1

原创 VHDL学习--分频器

分频器,就是将特定频率的信号,通过计数分频的方式,得到自己需要的频率的信号。比如假如你的系统时钟是50Mhz,而你需要得到一个25Mhz的信号,则可以设计一个二分频模块对系统时钟进行分频获得。设计方法很简单,系统时钟每个上升沿或下降沿的时候输出取反即可。同理可用于设计多倍数分频器,只需加入一个计数器即可:每遇见一个上升沿,计数器加一,当计数器计数加到你需要的倍数时候,输出信号再取反,就可以得到你需要的分频的信号。下文代码是一个21倍分频器。library ieee;use ieee.std_logic_

2021-02-23 11:05:51 11991 6

原创 VHDL学习—双端口存储器

存储器,顾名思义作用就是用于存储数据。存储器分RAM和ROM两种,其中ROM为只读存储器,而RAM为可读写存储器,既可写入数据,也可读取数据。常用的存储器都为单端口存储器,即数据输入端和数据输出端用同一个端口。所以通常RAM存储器的引脚通常有一组数据线(双向)、一组地址线、一个时钟入口以及一个读写控制信号。在时钟的边沿触发下,通过读写控制信号控制读写。当进行写操作时,将数据写入地址线指定的单元,当进行读操作时将地址线指定单元的内容读出。由于笔者项目需求,需要一个双端口的存储器,即需要设计一个存储器带有两个

2021-01-27 00:53:40 3104 2

原创 VHDL学习----多端口通用寄存器堆RF

寄存器堆(register file)是CPU中多个寄存器组成的阵列,通常由快速的静态随机读写存储器(SRAM)实现。这种RAM具有专门的读端口与写端口,可以多路并发访问不同的寄存器。本人所写的RF寄存器堆,其中包含4个8位寄存器(R0、R1、R2、R3),有三个控制端口。其中两个端口控制读操作,一个端口控制写操作,三个端口可同时操作。RD1、RD0选择从A端口读出的寄存器,RS1、RS0选择从B端口读出的寄存器,WR1、WR0选择被写入的寄存器。WRD 控制写操作。当WRD = 0时,禁止写操作;当WR

2021-01-10 14:07:09 2045

原创 VHDL学习--简易ALU设计

ALU,即算术逻辑单元(arithmetic and logic unit) 是能实现多组算术运算和逻辑运算的组合逻辑电路,简称ALU。ALU的实现较为简单,根据真值表利用case语句分情况设计即可。本人所写ALU较为简单,具有以下功能:模块的端口主要有3位的功能选择端,两个8位的A,B数据输入端口,1位的C进位/借位端口,以及8位的数据输出端口。C仅在进行加法和减法时有效。当有进位或借位时输出1,无则为0。其中乘法功能为AB输入低四位相乘。library ieee;use ieee.std_lo

2021-01-01 17:42:23 3724

原创 VHDL学习----串行数据检测

串行数据检测,就是输入一段数据,如有检测到特定的比特流,则输出1表示检测到特定序列。比如下文的示例代码,就是当检测到连续3个或以上的1时,输出端输出1。采用状态机的方式设计较为简单,当输入为1时,跳转到下一个状态。当在s2或s3状态时若输入仍为1,则表示出现连续3个或以上的1比特流,此时输出1。当需要检测其他比特流时例如101,改变状态跳转调节即可。笔试中这种题很常见。Library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.a

2020-12-27 16:52:46 1754

原创 VHDL学习----如何声明自己写的模块

VHDL学习笔记----如何声明自己写的模块 有时候在完成一个工程时候,需要将多个自己写的实体联合起来调用。为了在一个工程中调用多个模块,需要撰写一个声明文件,将自己用到的全部实体都声明以后,再将各个模块的.vhd文件放在同一个工程目录下,才能成功调用自己所写的多个模块,实现最终的设计。有点类似于C语言中,自己所撰写的函数需要撰写.h声明文件,再将.c文件一同放入工程目录中,才能调用自己写的函数。下文是一个简单示例。library ieee;package ch29 isuse ieee.

2020-12-26 21:29:37 1199

TOP_test3.zip

简易8位RISC处理器设计

2021-06-29

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除