VHDL经验点滴

用VHDL实现有限状态机 背景在数字系统中,有两种基本类型的电路。第一类是组合逻辑电路。在组合逻辑电路中,输出仅依赖于输入。组合逻辑电路的例子包括加法器,编码器和多路复用器。例如,在加法器中,输出只是输入的总和; 无论以前的输入或输出是什么都没有关系。第二种类型的数字逻辑电路是时序逻辑电路。在顺序逻辑电路中,输出不仅取决于输入,还取决于系统的当前状态(即输出值和任何内部信号或变量)。顺序逻辑电路的复杂程度不同于简单的计数器... 阅读详情
一些学到的或自己总结的VHDL经验点滴,纪录下来,以免以后忘记了。因为有些是自己总结的,肯定有错误或不周之处,欢迎高手指正!内容逐步补充中。

1。如何判断一个process综合结果是组合逻辑还是时序逻辑?
A:一个比较简单的办法是看敏感信号和条件语句的条件,如果是电平触发的,很可能是时序逻辑;如果是边缘触发的,则是时序逻辑。

2。采用二进程状态机比单进程状态机好,把同步时序和组合逻辑分开,有利于综合器优化代码。碰到需要对时钟计数的时候,可能会觉得用单进程方便点,如果要用双进程结构的话,可以把计数放在同步进程里,给出一个计数值,而组合进程用这个值作为输入,这样保证组合进程仍然是组合逻辑(里面不含边沿触发条件)。

3。采用统一的接口时序。一个FPGA设计里通常都是有多个模块,如果各个模块的接口都不相同,那将会带来不少麻烦。因此尽可能采用统一的接口时序。RAM形式接口(一般由片选、地址、输入(n)、输出(n)、读写信号组成,实际应用时可增加中断信号)简单、快速,通常是第一选择。各个模块都采用RAM接口后,对模块的操作信号和时序都是一样的,所不同的就是对不同的地址写入不同数据,以使用各模块的功能,而且可以统一挂接到总线上。所以一般单片机内部各种模块都是采用相同的接口,挂接到内部总线上,实现于CPU内核的连接。
     例如一个收发器的内部接口例子:
--
-- 寄存器定义
--     地址        名称        R/W            说明
--    00            DATATRANS    R            8 bit要发送的数据
--    00            DATARECV    W            8 bit接收到的数据
--    01            CONTROL        R/W            控制寄存器:
--                                        [0]=收发模式        0:接收模式;1:发送模式
--                                        [1..7]=保留
--  10            STATUS        R/W            状态寄存器
--                                        [0]=接收数据就绪    读到1时有数据收到;写入1时清除中断
--                                        [1]=发送数据完成    读到1时发送数据完成;写入1时清除中断
--                                        [2..7]=保留
--    11            NONE                    保留
--

entity transceiver is
    port(
        -- 收发模块接口
        clkin        : in std_logic;        -- 50MHz clock input
        reset        : in std_logic;
        address        : in std_logic_vector(1 downto 0);        -- 寄存器地址
        datain        : in std_logic_vector(7 downto 0);        -- 数据输入
        dataout        : out std_logic_vector(7 downto 0);        -- 数据输出
        write        : in std_logic;                            -- 写使能
        cs            : in std_logic;                            -- 片选
        irq            : out std_logic;                        -- 中断输出
       
        -- 外部接口
        rxd            : in std_logic;        -- 接max481 RO
        txd            : out std_logic;    -- 接max481 DI
       ...
    );
end entity transceiver;

    (再罗嗦一句:这个收发器后来使用了fifo作为接口使用起来也是很方便)。

4。function/procedure内必须是组合逻辑吗?由于function/procedure是立刻返回的,如果是一个需要几个时钟才输出结果的时序逻辑,那调用者怎么知道它什么时候返回呢?所以我觉得应该是组合逻辑,但目前还没找到证实的资料,是否正确,望高手指点!

5。Altera不建议设计者在FPGA内部使用三态端口。因为Altera的产品中只有IO部分有三态门,而在内部逻辑电路只能用多路器实现,因此一般不要在内部使用三态门。同时Altera指出:其实内部三态门毫无意义。

6。理解敏感信号。敏感信号是并发语句的必要要素,指明了并发语句被执行的条件。敏感信号有显式和隐式,对于PROCESS,敏感信号显式说明;对于并发信号代入(a <= b),隐含指明了b是 敏感信号;对于条件信号代入(q <= "00"  WHEN sel = "0" ELSE q <= "11"),WHEN后面判断的信号sel就是隐含的敏感信号;对于选择信号代入(WITH sel SELECT q <= "00" WHEN 0 ....),WITH后的sel就是隐含的敏感信号。要注意的是,IF语句里条件判断的信号并不是敏感信号,而只是分支条件,所以IF语句只能用在进程内,不是并发语句。比较一下IF语句和WITH语句,可以看出IF条件中的信号只是单纯起一个分支条件的作用,而WITH后的信号则起到分枝条件和敏感信号双重作用。这应该是VHDL语言为了让IF与PROCESS结合得到强大表达力的设计吧!
VHDL语言的学习 FPGA设计语言VHDL的学习语言简述VHDL与Verilog语言对比VHDL学习资料总结 语言简述 VHDL是较早的硬件描述语句,其逻辑严谨、抽象描述能力强是其特点。但是由于语法复杂学的人也变得少了起来,致使大多数同学学习verilog语言。但是,VHDL语法依旧具有很大的市场份额,如果说一个FPGA工程师不会VHDL语言,这V绝对是一个硬伤,所以这篇文章我们将给出学习VHDL语言的详细方法。 ... 阅读详情

相关推荐

用VHDL编写testbench激励文件

最近在做nandflash的擦写,要用VHDL编写激励文件做仿真,之前一直用的Verilog,现在总结如何用VHDL语言编写testbench。 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; use IEEE.STD_LOGIC_ARITH.ALL; entity (测试平台名)is end...

Jkcia的博客 7825

敏感信号

进程语句中有一个敏感信号表,这是进程赖以启动的敏感表。对十表中列出的任何信号的改变,都将启动进程,执行进程内相应顺序语句。进程有组合进程和时序进程两种类型,组合进程只产生组合电路,时序进程产生时序和相配合的组合电路,这两种类型的进程设计必须密切注息VHDL语句应用的特殊方ICI,这在多进程的状态机的设计中,各进程有明确分土。设计中,需要特别注息的是,组合进程中所有输入信号,包括赋值符号右边的所

学海无涯,回头是岸........ 9076

Verilog和VHDL有什么区别?

在这个 D 触发器的 Verilog 描述中,“always” 块在时钟上升沿(“posedge clk”)触发,将输入 d 的值赋给输出 q,这是典型的基于行为的时序逻辑描述方式。由于其语法的严谨性,更适合用于开发高可靠性、高安全性的复杂数字系统,如飞机的航空电子设备、导弹的制导系统等复杂硬件系统的设计。在这里,“entity” 声明了模块的名称 “and_gate” 和端口信息,“architecture” 中的 “<=” 符号用于赋值操作,实现了与门的逻辑功能。更侧重于电路的行为描述和门级建模。

u011732210的博客 3348

VHDL语法学习

一、VHDL语言程序的基本结构 完整的VHDL语言程序包含实体(Entity)、构造体(Architercture)、配置(Configuration)、包集合(Package)和库(Library)五部分。其中,实体是用来描述设计系统的外部接口;构造体用于描述系统内部的结构和行为;包集合存放共享的数据类型、常数和子程序等;配置用于从库中选取所需单元来组成系统设计的不同版本;库存放已经编译的实体、构造体、包集合和配置。 1.1 实体 实体 .................................

qq_43425438的博客 1万+

VHDL一键转换为Verilog HDL的方法

介绍一种代码转换工具,可以一键将VHDL转换成Verilog HDL

航天领域资深码农,型号经验丰富,一线干货分享 1532

VHDL程序结构

文章首发于我的个人博客 下图所示为一个一般意义上的VHDL结构模式。其中实体和结构体是VHDL程序的必要部分,他们可以构成最基本的VHDL程序。通常,一个VHDL程序还包含库和程序包,比如最常用的IEEE库中的STD_LOGIC_1164程序包。一个实用的VHDL程序也可以由一个或多个实体构成,可以将一个实体作为完整的系统直接使用,也可以将其作为一个底层的配置,即元件来例化。配置(CONFIGURATION)常用于行为仿真,可以与对特定的结构体进行配置,选择控制。 [外链图片转存失败,源站可能有防盗链机制,

我本傲骄的博客 2926

进程的敏感信号表_VHDL进程变量信号

VHDL的并行语句用来描述一组并发行为,它是并发执行的,与程序的书写顺序无关。进程语句begin进程语句包含在结构体中,一个结构体可以有多个进程语句,多个进程语句间是并行的,并可访问结构体或实体中定义的信号。因此进程语句称为并行描述语句。进行语句结构内部所有语句都是顺序执行的进程语句的启动是由process后敏感信号表中所标明的敏感信号触发来的。各进程间的通信是由信号来传递的语法如下:标记:pro...

weixin_36169900的博客 6408

VHDL入门解惑经典实例经验总结

比较老的VHDL书籍,但是书中的例子都很经典,且书中对每个例子的分析很透彻,对入门的新手还是很有帮助的,欢迎下载!

VHDL硬件描述语言——进程语句(process)

进程表示一个处理过程,在一个结构体中可以包含多个进程。进程与进程之间是并行的,进程内部包含一组顺序描述语句,进程内部的语句是按先后次序顺序执行的。

qq_42137563的博客 9067

关于solidworks无法获得下列许可SOLIDWORKS Standard的解决方法

在使用solid works的时候,出现无法获得下列许可SOLIDWORKS Standard,刚开始还以为软件出了问题,经过一方折腾找到了解决方法。希望这个方法可以帮助到您 找到这个服务 问题到这里就已经得到了解决,但更大的问题是,要是每次遇见这种都要这么麻烦,岂不是很累?这里也提供一种方法。考虑到每个人的情况,下面说的可能有一点啰嗦。 !!!!!!注意那个在此期间之后重新启动服...

Chaosna13的博客 7万+

用友U8 API 二次开发:WebService封装7个核心DLL引用与U8Login登录避坑

本文详细介绍了用友U8 API二次开发中的WebService封装与U8Login登录优化实践。通过7个核心DLL的正确引用、U8Login登录机制的深度解析及IIS环境下的特殊处理方案,为开发者提供了一套高可用性的通用解决方案,助力企业实现ERP系统的高效集成与数字化转型。

weixin_42524171的博客 505

VHDL组合逻辑过程---Processes

VHDL组合逻辑过程---Processes

cckkppll的博客 1904

阿里平头哥与华为芯片的比较

阿里平头哥与华为芯片代表了中国AI芯片领域的两种典型发展路径:平头哥通过兼容CUDA生态快速切入市场,以较低成本提供接近国际水平的AI算力;华为则坚持全栈自研路线,构建从芯片到框架的完整技术体系,更注重供应链安全和自主可控。从短期来看,平头哥PPU在单卡性能参数上全面超越昇腾910B,接近英伟达H20水平,且成本优势明显,有望在云服务和互联网应用领域取得更大市场份额。而华为昇腾则凭借全栈自研和端边云协同优势,在政企市场和科研领域更具竞争力。

shao.bing的专栏 4013

VHDL快速入门

写在前面 VHDL是一门硬件语言,没学过硬件语言,挺感兴趣,还可以用在计组的实验中,花了点时间学习整理了一下VHDL的基本语法,方便查看。本blog所用到的所有图片都引用自 VHDL语言的基本语法参考文档 一、VHDL语言的基本语法 1、VHDL语言的表示符 2、VHDL的数字 2.1 数字型文字 156E2的意思是156×\times×10210^2102; 下划线可以连接数字。 2.2 数字基数表示的文字 2.3 字符串型文字 2.4 下标名及下标段名 二、VHDL语言的数据对象 .

messyking的博客 6万+

告别图像畸变:手把手教你用HALCON的`gen_image_to_world_plane_map`做高精度视觉测量

本文详细解析了HALCON的`gen_image_to_world_plane_map`算子在工业视觉测量中的应用,通过精确的几何变换消除透视畸变,提升测量精度。文章涵盖相机标定、世界坐标系建立、实战应用及性能优化,适用于液晶屏质检、金属板检测等场景,帮助工程师实现高精度视觉测量。

weixin_28718487的博客 424

企业级智能问数开发的核心痛点与技术聚焦

本文介绍了企业级智能问数系统开发的三大核心问题和解决方案:语义解析不精准、SQL生成不健壮、企业适配难落地。文章从开发者视角出发,详细拆解了NLU语义解析、SQL生成、对话记忆、企业级适配四大核心模块的技术实现。 在技术选型方面,推荐了LangChain+DeepSeek-R1、FAISS/Milvus、SQLAlchemy等工具链组合。针对企业级需求,重点讲解了: 语义解析模块的意图识别优化和要素提取技术 SQL生成模块的语法校验与性能优化方案 对话记忆模块的Redis存储实现 企业级适配的三层防护体系和

lamehsl的专栏 1047

VHDL基础

目录 一、运算符 1.算数运算符 2.关系运算符 3.逻辑运算符 4.赋值运算符 5.关联运算符 6.其他运算符 7.运算符优先级 二、VHDL的基本结构 一、运算符 1.算数运算符 +,-,*,/ MOD: 取模,取模运算(a MOD b)的符号与b相同,其绝对值小于b的绝对值。如:-5 MOD 2 = 1,5 MOD -2 = -1。 REM: 取余,取余运算...

weixin_43864459的博客 1万+

K210视觉项目上位机避坑指南:解决C#解析ESP8266 TCP图像流的乱码、卡顿与连接中断

本文详细解析了K210与ESP8266在视觉项目中的上位机开发问题,重点解决TCP图像流解析中的乱码、卡顿与连接中断问题。通过自定义协议、JPEG流重组、TCP连接优化等实战技巧,提升系统稳定性和性能,适用于嵌入式视觉开发者和C#上位机程序员。

weixin_28730131的博客 402

Verilog和vhdl混合调用测试心得

初学FPGA,记录一些个人的探索历程和心得。本文的初衷是为了验证VHDL和Verilog文件互相调用功能。以一个简单的二选一选择器为例,分别用两种方法实现功能。 一、 用Verilog文件调用VHDL 以Verilog文件为顶层文件,调用VHDL模块,testbench为Verilog文件。 1、新建project 2、编写.vhd文件,FPGA_VHDL.vhd,文件名与模块名称一致; 3、编写FPGA_Verilog.v文件,文件名与模块名称一致,且设为top文件。 4、编写testbench文件

weixin_43090994的博客 7170

《网络安全自学教程》- SQL注入之报错注入原理+步骤+实战操作

这篇文章为大家解析报错注入的实现原理,结合实战案例讲解报错注入的使用步骤。

wangyuxiang946的博客 1万+

【AI工具】免费获取各类AI大模型APIKEY的使用教程,以硅基流动+Deepseek为例

【AI工具】免费获取各类AI大模型APIKEY的使用教程,以硅基流动+Deepseek为例

funfan的博客 4267

VHDL重点语法全解

今天看到一篇博文,将VHDL语法基本包括了,先转过来备忘:VHDL基本点【精解】 VHDL描述硬件实体 结构 举例 Entity()实体 Enitiy 实体名 is PORT(端口名1,端口名N:方向:类型) [端口说明] End Entity; Port的方向有: IN , OUT, INOUT, BUFFER, L...

Reborn Lee 3万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

VHDL入门

VHDL入门学习-程序组成 一个完整的VHDL程序是以下五部分组成的: 1.库(LIBRARY):比较好理解,调用系统已有的库,WORK库就是用户当前编辑文件所在的文件夹, IEEE库:由IEEE(美国电子电机工程师学会)制定的标准库 LPM库 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.math_real.all; use IEEE.s...

zhao_hong_liang的博客 5961

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

什么是VHDL?一文带你了解VHDL语言

基于FPGA的SOC在嵌入式系统应用越来越广了,比较流行的硬件描述语言有两种Verilog HDL/VHDL,均为IEEE标准。VHDL如果有C语言基础的话就会比较容易上手。而VHDL语言则需要Ada编程基础。另外VHDL语言具有大量成熟的模块,从某种角度说VHDL更具生命力。

coachip的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

FPGA笔记:VHDL语言总结

VHDL语言总结前言一、 VHDL是什么?1. 缩写2. 作用3. VHDL与原理图描述的比较4. VHDL语言特点5. 与其他语言比较二、VHDL程序架构VHDL基本结构1. 实体 Entity2.结构体 Architecture3.配置 Configuration4.库 Libraty 程序包 Package三、VHDL语言要素四、VHDL顺序语句五、VHDL并发语句六、VHDL子程序七、VHDL描述风格总结 前言 FPGA作为提升处理性能的黑马,这些年越来越火热,不论对于未来是否从事这个方向的人来说,

嵌入式学习记录站点 6963

VHDL的顺序语句

上次我们了解了VHDL语言的并行语句,现在我们来学习VHDL的顺序语句。 顺序语句与并行语句共同构成了VHDL的描述语言,是VHDL作为硬件描述语句的一个特点。顺序语句只在仿真时间上是相对并行语句而言的,实际硬件的运行不一定是顺序执行的。 VHDL语言支持的并行语句主要有以下几种: 赋值语句 wait语句 after语句 if语句 case语句 null语句 loop语句 exit语句 next语句 assertion/report语句 return语句 顺序语句在VHDL程序中的位置 顺序语句只出现在

qhs的博客 1万+
上一篇: 第一个VHDL程序
下一篇: PCI卡的WDM驱动开发笔记
BuilderChen
博客等级 码龄26年 23粉丝 24原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值