单片机嵌入式编程的五个注意事项
在单片机嵌入式编程中,最难的两部分是interrupt和MM(memorymanage),之所以有人觉得并不困难,那是因为太多数情况下芯片制造商都已经直接写好,但是如果设计者本身就在为芯片制造商工作,那就必须自己会写配置文件。这两个东...
51单片机各中断初始化及子程序模板
/*************************************************************51单片机各中断初始化及子程序模板,几乎包括了传统51单片机的全部中断*1、外部中断0*2、定时器中断0*3、外部中断1*4、定时器中断1*5、串行中断*6、定...
详解FPGA电源设计的几个步骤
计算系统电源供电的FPGA看起来像一个完整的系统供电。电源设计工程师面临的3到15的电压轨供给(有时甚至更多)的挑战;而这仅仅是开始。 FPGA是通常制造的使用需要低核心电压的最新晶片制造技术,但是电源也必须供电多个...
解析FPGA的低功耗设计
1.功耗分析整个FPGA设计的总功耗由三部分功耗组成:1. 芯片静态功耗;2. 设计静态功耗;3. 设计动态功耗。● 芯片静态功耗:FPGA在上电后还未配置时,主要由晶体管的泄露电流所消耗的功耗。● 设计静态功耗:当FPGA配置完成后,当...
在FPGA中,时序就是全部
会有来自不同角度的挑战,包括:● 更好的设计计划,例如完整的和精确的时序约束和时钟规范● 节约时间的设计技术,例如为更好的性能结果,整合设计的各个部分而编写严谨的RTL代码,提出最高性能挑战,当你之后调整设计时减少迭代...
AVR单片机的串口模块设计
本文采用ATmega48芯片及CMX865芯片实现FSK通信模块,基于此模块,用户与业务平台之间进行FSK信息交互,相对于终端来说就是简单的串口通信。1 ATmega48介绍 ATmega48是基于AVR增强型RISC(精简指令集)结构的高性能、低功耗的8...
单片机上拉电阻抗干扰提升方法
想要实现单片机抗干扰,首先要综合考虑各I/O口的输入阻抗,采集速率等因素设计I/O口的外围电路。一般决定一个I/O口的输入阻抗有3种情况。第一种情况:I/O口有上拉电阻,上拉电阻值就是I/O口的输入阻抗。人们大多用4K-20K电阻...
关于51单片机晶振的问题总结
一,为什么51单片机爱用11.0592MHZ晶振?其一:因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。其二:用11...
利用可编程振荡器增强FPGA的应用
内在可编程的硅MEMS时钟振荡器架构能够帮助采用FPGA的系统设计人员解决许多难题。这种微型机电系统架构能够轻松整合一些其它功能,如:用于消减EMI 的扩频时钟、用于消除抖动的数控振荡器以及高速应用中的失效保护功能。...
ARM、DSP、CPLD、FPGA的技术特点和区别是什么
arm(AdvancedRISCMachines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。ARM架构是面向低预算市场设计的第一款RISC微处理器,基本是32位单片机的行业标准,它提供一系列内...
详析单片机、ARM、FPGA嵌入式的特点
单片机的特点:(1)受集成度限制,片内存储器容量较小,一般内ROM:8KB以下;(2)内RAM:256KB以内。(3)可靠性高(4)易扩展(5)控制功能强(6)易于开发ARM的特点:(1) 自带廉价的程序存储器(FLASH)和非易失的数据存储器(EEPROM)。这些存储器可多次电擦写,使...
系统最大关中断时间为0us的原理
raw os 采用了特殊的机制, 可以降低整个系统的最大关中断时间无限接近0us. 其主要实现原理是原先系统关中断的地方改为关抢占,这样就可以把系统最大中断时间降为最低了。 读者可以看到RAW_CRITICAL_ENTER()的实现有两...
单片机内部寄存器结构原理分析
下图中我们能看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在一个51单片机...
【基础知识】单片机指令功能
单片机指令功能一览表一、传送操作助记符 代码 说明MOV A,Rn E8~EF 寄存器AMOV A,direct E5 dircet 直接字节送AMOV A,@Ri ER~E7 间接RAM送AMOV A,#data 74 data 立即数送AMOV Rn,A F8~FF A送寄存器MOV Rn,dircet A8~...
【单片机】几种常用单片机介绍
ATMEL公司的AVR单片机,是增强型RISC内载Flash的单片机,芯片上的Flash存储器附在用户的产品中,可随时编程,再编程,使用户的产品设计容易,更新换代方便.AVR单片机采用增强的RISC结构,使其具有高速处理能力,在一个时钟周...
单片机C环境下位操作的实现方法
1 用“读-修改-写”方法实现对单个位的位操作一般采用“读-修改-写”的方法实现单个位的位操作,通过与0“与”操作,将某一位清0。如使i变量的b0位为0,实现方法为i=i&0xfe。通过与1“或&rdq...
8位单片机的16位外部总线扩展
1 8位/16位总线时序分析1.1 8位单片机总线时序带有外部总线的8位单片机有很多,如51系列,AVR系列等,本文以W77E58为例,W77E58是Winbond公司推出的增强型51单片机,工作时钟最高为40M赫兹,在同样的时钟频率下,W77E58指令速度是...
用单片机设计A/D和D/A转换器
1、PIC16C62×系列单片机的特点PIC16C62×系列为RISC精简指令、哈佛结构总线、18个引脚的单片机。具有低功耗、高性能、全静态、35条指令极易编程的特点。OTP 片种的性价比极高。除了具备一般单片机的特点...
数据定义伪操作之五
(10)DCI在ARM代码中,DCI用于分配一段字对齐的内存单元,并用伪操作中的expr将其初始化;在Thumb代码中,DCI用于分配一段半字对齐的半字内存单元,并用伪操作中的expr将其初始化。语法格式{lable} DCIexpr{,expr}…其中:{...
数据定义伪操作
数据定义伪操作用于数据缓冲池定义、数据表定义、数据空间分配等,包括以下的伪操作。(1) LTORGLTORG用于声明一个数据缓冲池的开始。在使用伪指令LDR时,常常需要在适当的地方加入LTORG声明数据缓冲池,LDR加载的数据暂时放...
单片机入门的方法与学习误区介绍
在正式介绍之前,要为大家补充一些较为重要的基础知识。首先R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令。一般来说,人们习惯性约定将“正在...
AVR单片机入门一:单片机嵌入式系统的结构
一、单片嵌入式系统的结构单片嵌入式系统一般包含硬件与软件两个部分,而硬件部分又分为单片为控制芯片(即单片机)和外围电路,外围电路又分为基本系统电路与接口电路,接口电路又分为前向通道接口电路、后向通道接口电路、交...
PDIUSBD12与PlCl6F877单片机的接口电路图
PDIUSBD12与PlCl6F877单片机的接口原理电路图如下所示:...
单片机的看门狗定时器是什么?
看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,在单片机程序的调试和运行中都有着重要的意义。它的主要功能是在发生软件故障时,通过使器件复位(如果软件未将器件清零)将单片机复位。也可以用于将器件从休眠...
12m晶振延时500ms程序
12m晶振延时500ms程序 程序:void delay500ms(void){unsigned char i,j,k;for(i=15;i>0;i--)for(j=202;j>0;j--)for(k=81;k>0;k--);}计算分析:程序共有三层循环一层循环n:R5*2 = 81*2 = 162us DJNZ 2us二层循环m:R6*(n+3) = 202*165...
51单片机1ms延时程序
51单片机1ms延时程序程序:void delay1s(void){unsigned char h,i,j,k;for(h=5;h>0;h--)for(i=4;i>0;i--)for(j=116;j>0;j--)for(k=214;k>0;k--);}void delay1s(void)//12M晶振,延时999999.00us{unsigned char i,j,k;f...
单片机12m晶振延时10ms程序
单片机12m晶振延时10ms程序 程序:void delay10ms(void){unsigned char i,j,k;for(i=5;i>0;i--)for(j=4;j>0;j--)for(k=248;k>0;k--);}...
预防晶振老化的方法有哪些?
频率老化率是在恒定的环境条件下测量振荡器频率时,振荡器频率和时间之间的关系。这种长期频率漂移是由晶体元件和振荡器电路元件的缓慢变化造成的,因此, 其频率偏移的速率叫老化率,可用规定时限后的最大变化率。 然而造...
DSP编程技巧之:详解cmd
C28x的编译器把存储空间划分为两个部分进行管理,包括:1. 程序存储空间:包含可执行的代码,初始化的记录和switch-case使用的表。2. 数据存储空间:包含外部变量,静态变量以及系统的栈;一般情况下,各个寄存器对应的存储空间也归...
DSP编程技巧分享:函数调用
一.父函数调用子函数在父函数调用子函数(被调函数)时,通常会执行以下的步骤:1.如果寄存器不是SOE类型的(入口保存,saveonentry),即它的值没有被被调用函数占用,但是在被调用函数返回值之后又会用到该寄存器的值的话,则该寄...
DSP编程技巧:数据类型
64位整数的处理从上面的表中,可以看出C28x的编译器是支持64位的整数类型的,这使得在处理某些高精度智能编码器的反馈数据时特别方便,因为在更老的不支持64位整数类型的器件上编程时,需要我们自己定义64位类型,在运算时要自...
DSP编程技巧之:编译指示
1. CHECK_MISRA它的作用与在编译器选项中使用--check_misra是相同的,都是对特定源文件使能MISRA-C:2004规则检查(汽车工业软件可靠性联会),使用方法是:#pragma CHECK_MISRA (" {all|required|advisory|none|rulespec} ...
DSP编程技巧之:关键字
1. constconst关键字用来定义值不会发生变化/不允许被改变的变量、数组等,即相当于这些变量、数组是“只读”的。通常情况下,const定义的全局变量会存放在cmd文件定义的.const段中,而.const段一般会被链接器分...
DSP编程技巧之:代码优化必须考虑的问题
1. 小心使用汇编表达式在C/C++代码中,有时候一些操作难免会对某些CPU寄存器进行操作,此时要使用内嵌的汇编表达式,例如asm("EALLOW"),或者重置某个中断的掩码寄存器等。在优化代码时,编译器会重新调整某些代码段的顺序,自...
单片机软件加密和解密原理浅析
软件加解密的前提是要有软件,即单片机程序,可以是以源代码的形式(C语言或汇编语言程序)提供,或是以二进制(bin格式或hex格式等)提供。一般学习借鉴别人的程序,一般是以二进制形式提供(此二进制程序一般是从上述硬件解密的...
单片机在哪些方面有应用
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车...
排查故障之三大注意事项
排查故障是一门学问,深得很。但笼而统之,就三大必须,有了这三条,没有排查不了的故障:第一、心态。第二、策略。第三、耐心。第一条心态。你必须对出现的故障,有强烈的感激。谢谢上天给了我这个机会,我要牢牢把握住。你可以想...
关于单片机中的flash和eeprom解析
FLASH的全称是FLASH EEPROM,但跟常规EEPROM的操作方法不同FLASH 和EEPROM的最大区别是FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储单元的结构也不同,FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然...
单片机设计过程中应该如何摆脱电磁干扰
一、影响EMC的因数1.电压电源电压越高,意味着电压振幅越大,发射就更多,而低电源电压影响敏感度。2.频率高频产生更多的发射,周期性信号产生更多的发射。在高频单片机系统中,当器件开关时产生电流尖峰信号;在模拟系统中,当负...
51单片机学前基础知识
一.单片机的概念:在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。二.单片机的用途:工业自动化:数据采集,测控技术;智能仪器仪表:数字示波器、数字信号源、数字万用表、感应电...
AVR单片机基础介绍
AVR单片机是ATMEL公司研制开发的一种新型单片机,它与51单片机、PIC单片机相比具有一系列的优点:1:在相同的系统时钟下AVR运行速度最快;2: 芯片内部的Flsah、EEPROM、SRAM容量较大;3:所有型号的Flash、EEPROM都可以反复烧...
MSP430单片机的特点解析
MSP430系列单片机的迅速发展和应用范围的不断扩大,主要取决于以下的特点。a. 强大的处理能力:MSP430系列单片机是一个16位的单 片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7种源操作数寻址、4种目的操作数寻址)...
单片机概述 什么是单片机?
1、何谓单片机 一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。在个人计算机上这些部份被分成若干块芯片,安装一个称之为主...
stm32中断优先级概述
一:综述STM32 目前支持的中断共为 84 个(16 个内核+68 个外部),可以提供16 级可编程中断优先级的设置(仅使用中断优先级设置8bit中的高4位)和16个抢占优先级(因为抢占优先级最多可以有4位)。二:优先级判断STM32(Cortex-M3)中有...
PIC单片机入门必看基础知识
PIC单片机的特点及与51系列单片机的区别:这里仅以使用广泛的中低档PIC16/PIC12/10系列为例说明。PIC系列单片机采用哈佛总线结构,程序空间总线和数据总线分开,地址长度也不一样,也同样不在一个连续的空间,程序为单字结构,一...
PIC单片机特点和优势介绍
一、PIC系列单片机有什么优势?自从我95年接触PIC单片机以来,便一直热衷于这种单片机的开发与应用。有不少朋友问我:PIC到底有什么优势?也许你也会有这样的疑问,所以我在这里略谈几点自己的看法。1) PIC最大的特点是不搞...
PIC单片机与MCS-51系列单片机区别解析
PIC单片机与MCS-51系列单片机的区别应该说有三个主要特点:(1)总线结构:MCS-51单片机的总线结构是冯-诺依曼型,计算机在同一个存储空间取指令和数据,两者不能同时进行;而PIC单片机的总线结构是哈佛结构,指令和数据空间...
单片机、微控制器和微处理器区别介绍
1. 问:单片机、微控制器和微处理器有何区别?答:处理器通常指微处理器、微控制器和数字信号处理器这三种类型的芯片。微处理器(MPU)通常代表一个功能强大的CPU,但不是为任何已有的特定计算目 的而设计的芯片。这种芯片往...
MCS-51系列单片机结构以及管脚介绍
1.MCS-51单片机内部结构框图2.MCS-51引脚图3.引脚介绍VCC(40脚):接+5 V电源正端。VSS(20脚):接+5 V电源地端。XTAL1(19脚):接外部石英晶体的一端。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。...
ARM处理器异常处理步骤
ARM处理器状态、指令集 ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令,对应ARM指令集;第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令,对应...
学习单片机入门的方法与误区
单片机很简单,有点电子底子的都可以玩会。玩单片机可以有以下几个等级:1,纯硬件DIY:这一级玩法很简单,只要有一个ISP下载线(和手机数据线的性质差不多),自己制作硬件电路,然后把单片机的程序烧到单片机里就行了。不需要懂编...
单片机中关键字data idata xdata 和pdata的区别
data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。idata是用类似C中的指针方式 访...
ROM、RAM、DRAM、SRAM和FLASH的区别介绍
ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。RAM有两大类,一...
单片机中无符号数运算容易出现的问题
在一些运算中,我们希望有些数能表示正负,这就得用有符号数,而有些数的取值会超过有符号数的最大值,这时我们就得用无符数来表示.下面是我编程时遇到的两个问题(用的是MC9S12XS128处理器,16位的单片机).变量的声明如下...
单片机的时钟周期,机器周期,指令周期详解
时钟周期:时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个...
单片机晶振不起振原因分析
遇到单片机晶振不起振是常见现象,那么引起晶振不起振的原因有哪些呢?(1)PCB板布线错误;(2)单片机质量有问题;(3)晶振质量有问题;(4)负载电容或匹配电容与晶振不匹配或者电容质量有问题;(5)PCB板受潮,导致阻抗失配而不能...
零基础学FPGA (二十三) SDR SDRAM(架构篇)
一、SDRAM工作部分1、上电初始化我们先来看第一部分,上电初始化。上电初始化我们知道,上电之后我们需要等待200us的稳定期,这段时间我们可以用一个定时器来计数,这没什么问题,然后进入的是预充电部分,这个时候,预充电的时候,s...
零基础学FPGA (二十二) SDR SDRAM(理论篇)
由于SDRAM本身就是一个比较复杂的东西,之前小墨在学这方面东西的时候感觉很是吃力,于是那时候便暂时放下了,知道年后这段时间,小墨又重新拾起这个知识点,想要一口气把它调通了,再往下看其他的东西。学SDRAM,理论要懂,代码设计...
深入学习FPGA之mif文件的制作
首先,打开MATLAB软件,小梅哥这里使用的版本为MATLAB 2012b。新建一个Script文件,操作为File —>New—>Script。在该文件中输入以下内容:F1=1; %信号的频率Fs=1024;%采样频率P1=0;%信号初始相位N=1023;%采样点数...
深入学习FPGA之PS2键盘驱动
一、 实验目的实现采用PS2协议的PC机键盘的解码,最终将PS2键盘作为FPGA系统的一个标准输入设备。二、 实验原理PS2键盘的内部结构我们不需要过多的去关注,我们只需要关心其接口协议,正确的解码其发送过来的按键信息即可,...
深入学习FPGA之DAC驱动
该芯片的特性如下所示:TLC5620特性:4路8位电压输出;单电源5V供电;串行接口;参考电压输入高阻;可编程的1次或2次输出范围;同时更新的能力;内部自带上电复位功能;低功耗;半缓冲输出。小梅哥设计的该芯片的驱动模块的接口...
FPGA入门者必读宝典:详述开发流程每一环节的物理含义
FPGA的开发流程是遵循着ASIC的开发流程发展的,发展到目前为止,FPGA的开发流程总体按照图1进行,有些步骤可能由于其在当前项目中的条件的宽度的允许,可以免去,比如静态仿真过程,这样来达到项目时间上的优势。但是,大部分的流...
零基础学FPGA (二十四)静态时序分析到SDRAM时序收敛
一、从静态时序分析说起我理解的静态时序分析,就是我们在不加激励的情况下,通过对电路进行时序的延迟计算,预计电路的工作流程,对电路提出我们需要的一些约束条件,比如我们需要从A寄存器到B寄存器的延迟不能大于10ns,如果我...
零基础学FPGA(二十五) 时序分析到SDRAM时序收敛下
七、SDRAM工作时钟相位偏移计算从上篇文章中我们知道,我们的数据是要经过一定的延时才会到达目标器件的,这个延时也就是相对于源寄存器的时钟发射沿的时间延时,数据在源寄存器时钟的上升沿到来时输出,经过FPGA的走线,PCB走...
深入学习FPGA之数码钟(下)
另外,Clock_Control模块为综合模块,内部包含了时、分、秒、时钟计数器模块和时间设定模块,该模块的内部结构这里小梅哥不做过多介绍,详细请参看代码。五、 代码组织方式本实验主要学习由顶向下的设计流程,代码均为常见风格...
零基础学FPGA (二十一)SOPC进阶自定义AD转换
这次实验我用的是原来我那块板子,因为那块板子上有AD转换芯片,而我们上次搭建的硬件系统是基于cyclone IV的硬件系统,但是这块开发板上没有AD芯片,我们就不做软件下载的实验了,其实只要在我们编写AD转换HDL代码的时候测试...
零基础学FPGA(二十)SOPC的定时器中断与串口数据收发
今天我们讲定时器中断与串行口中断,相信学过单片的朋友都用过这东西,对这东西也并不陌生,其实无非就是我们以前是对单片机编程,今天是对我们上次自己搭建的那个硬件系统进行编程,即我们的NIOS II 处理器。和上个实验一样,小...
零基础学FPGA (十九) 探秘SOPC
一、我理解中的SOPCSOPC呢,也就是所谓的可编程片上系统,通常一个系统所包含的,什么CPU,存储器,DSP和一些IO外设等都放在FPGA的周围,这样大大增加的系统的面积从而增加了系统的成本,SOPC技术呢就是把CPU,DSP,定时器,IO模块都放到...
零基础学FPGA (二十六)波形信号发生器系统设计
一、整体框架关于原理部分,书上讲的很多,但是总是感觉不尽人意,过于书面化的语言让人看着很头疼,下面就让小墨来给大家解释,希望给读者带来一种眼前一亮的感觉,让你再回去看书,看代码的时候觉得得心应手了。首先我们应该先明...
零基础学FPGA (十八) 谈可编程逻辑设计思想与技巧
一、乒乓操作乒乓操作主要用于数据流的处理,是用面积换取速度的体现之一,要知道面积与速度的互换贯穿FPGA设计的始终,下面先给一个框图我先来解释一下乒乓操作的过程:首先数据需要通过一个2选一数据选择器,在第一个时钟周...
零基础学FPGA(十七)1602动态电子可调时钟设计
1、操作时序1602要用到的管脚也就是4个,即1、rs数据命令选择端2、wr读写控制端3、lcden使能信号4、8位的数据端口而且1602的读功能我们用不到,所以wr一直置0即可,要控制的就是rs端,数据端和lcden端2、写时序由于读操作我...
深入学习FPGA之数码管动态扫描(下)
测试平台设计本实验主要对数码管驱动引脚的状态与预期进行比较和分析,通过仿真,验证设计的正确性和合理性。数码管驱动模块的testbench如下所示:`timescale 1ns/1nsmodule DIG_LED_DRIVE_tb;reg [23:0]data;reg clk;reg ...
深入学习FPGA之独立按键检测(下)
八、 仿真分析由上图仿真结果可知,当有按键按下时,需要较长一段时间后,Key_Flag会有一个高电平脉冲,同时Key_Value更新为输入按键的反码。为了确定消抖是成功的,这里再附上按键松开时的抖动细节图:由图可知,松开按键时,该按键...
深入学习FPGA之独立按键检测(上)
一、 实验目的实现4个独立按键的抖动检测实验,并通过4个独立按键控制4个led灯亮灭状态的翻转。二、 实验原理实际系统中常用的按键大部分都是轻触式按键,如图2-1所示。该按键内部由一个弹簧片和两个固定触点组成,当弹簧...
深入学习FPGA之点亮LED灯(上)
一、 实验目的实现4个LED灯的亮灭控制二、 实验原理LED灯的典型电路如下2-1所示,我们控制led灯的亮灭,实质就是去控制FPGA的IO输给LED负极一个低电平或者高电平。从图中可知,我们给对应的led负极上一个低电平,就会有对应...
深入学习FPGA之点亮LED灯(下)
七、 测试平台设计本实验主要对LED的输出和输入与复位的关系进行测试仿真,通过仿真,即可验证设计的正确性和合理性。相关testbench的代码如下:以下是代码片段:`timescale 1ns/1nsmoduleLED_Driver_tb;reg Rst_n;reg [3:0]...
深入学习FPGA之规范约定
为了将设计能够清晰明了的介绍给大家,让大家一看就懂,文档编写时会详细包含以下内容:一、 实验目的二、 实验原理三、 硬件设计四、 架构设计五、 代码组织方式六、 关键代码解读七、 测试平台设计八、 仿真分析九、 下...
零基础学FPGA(十六)前仿真全过程笔记(下篇)
大家先看两个图,等会小墨同学会结合这两个图给大家细细讲解仿真过程我们先来看第一个过程上电后,cpu先从ROM中读回两个周期的数据,是从ROM的0地址开始的,再对比我们之前定义好的ROM,数据读取正确,读回的数据的前三位是111,即...
零基础学FPGA(十五)前仿真全过程笔记(上篇)
一、什么是testbench?从字面意思上来理解,testbench就是一个测试平台,我们之前已经设计好了我们需要的cpu模块,我们怎么知道我们设计的对于不对呢?我们可以给其施加一个测试激励,例如,给他送时钟和复位信号,由于时钟和复位...
零基础学FPGA(十四)精简指令集RISC_CPU设计精讲
然而设计并没有像我想象的那么简单,代码设计好之后还要经过仿真,时序约束,仿真总体来说还好,但是时序约束我接触的很少,于是又去学时序约束方面的知识,由于控制SDRAM时钟跑到了100MHZ,时序约束对这个设计来说可以算是关键部...
零基础学FPGA(十三)先来说说VGA
标准的VGA接口有15个接口,但是真正用到的只有5个接口,分别是三个色彩信号,R,G,B,场同步信号VSYNC,行同步信号HSYNC,时序部分要通过控制行同步信号和场同步信号,色彩部分要控制RGB,先来看时序部分。对于一个分辨率为800*600的...
零基础学FPGA(十二)对于初学者一篇很不错的文章
1、不熟悉 FPGA的内部结构,不了解可编程逻辑器件的基本原理。FPGA为什么是可以编程的?恐怕很多菜鸟不知道,他们也不想知道。因为他们觉得这是无关紧要的。 他们潜意识的认为可编程嘛,肯定就是像写软件一样啦。软件编程的...
零基础学FPGA(十一)FIFO的串口发送机设计及常见错误
首先来解释一下FIFO的含义,FIFO就是First Input First Output的缩写,就是先入先出的意思,按照我的理解就是,先进去的数据先出,例如一个数组的高位先进,那么读出来的时候也就高位先出。下面是百度百科的解释。FIFO一般用于不...
零基础学FPGA(十)初入江湖之i2c通信
i2c总线在近年来微电子通信控制领域广泛采用的一种新型的总线标准,他是同步通信的一种特殊方式,具有接口少,控制简单,器件封装形式小,通信速率高等优点。在主从通信中,可以有多个i2c总线器件同时接到i2c总线上,所有与i2c兼容...
零基础学FPGA(九)串行口通信电路设计
1、顶层模块写程序都一样,不能多有的程序都写在一个模块里,那样看起来很麻烦,出了错误也不好维护,对于一些小的程序我们可以写在一个模块里,但程序一旦复杂起来还是要懂得模块化编程的,对于顶层模块,最好是只写接口就好了,例...
零基础学FPGA(八)手把手解析时序逻辑乘法器代码
下面是一段16位乘法器的代码,大家可以先浏览一下,之后我再做详细解释module mux16(clk,rst_n,start,ain,bin,yout,done);input clk; //芯片的时钟信号。input rst_n; //低电平复位、清零信号。定义为0表示芯片复位;定义...
零基础学FPGA(七)浅谈状态机
下面两个图分别表示两种不同的状态机。下面我们就通过代码来写一下状态机,以下面的状态转换图为例首先,是一种典型的状态机写法,这种写法我们称为一段时状态机,用于一些简单的设计是可以的,但如果是复杂的状态机,不建议大家...
零基础学FPGA(六)今天讲习题
这个题呢刚开始我是没看明白,记得书上只讲了我们习惯上的用法,这种用法我是没见过,问了下别人才知道,Verilog中一般是左高右低。第一个没问题,第二个,input [0:2] IP,习惯上我们这样写 input [2:0] IP,这里两个是等价的,即表...
零基础学FPGA(五)Verilog语法基础(下)
9、关于任务和函数的小结,挑几点重要的说一下吧(1)任务具有多个输入、输入/输出和输出变量,在任务重可以使用延迟、事件和时序控制结构,在任务重可以调用其它任务和函数。与任务不同,函数具有返回值,而且至少要有一个输入...
零基础学FPGA(三)Verilog语法基础(上)
1、模块的结构模块呢,是Verilog的基本设计单元,它主要是由两部分组成,一个是接口,另一个是逻辑。下面举一个小例子说明一下:module xiaomo (a,b,c,d);input a,b;output c,d;assign c=a|b;assign d=a&b;endmodule所谓接口就...
FPGA时序约束的6种方法总结
下文总结了几种进行时序约束的方法。按照从易到难的顺序排列如下:0. 核心频率约束这是最基本的,所以标号为0。1. 核心频率约束+时序例外约束时序例外约束包括FalsePath、MulticyclePath、MaxDelay、MinDelay。但这还不...
基于PLD的矩阵键盘状态机控制
一、FPGA矩阵键盘电路图在FPGA中的电路,与单片机雷同,如下所示:在上电默认情况下,L[3:0] =4''b1,因为上拉了3.3V,而默认情况下H.[3:0]为低电平;一旦有某一个按键被按下,便是是的该路电路流向该按键的H,是的L检测不到电流。...
非同于MCU的独立按键消抖动
一、为什么要消抖动如上图所示,在按键被按下的短暂一瞬间,由于硬件上的抖动,往往会产生几毫秒的抖动,在这时候若采集信号,势必导致误操作,甚至系统崩溃;同样,在释放按键的那一刻,硬件上会相应的产生抖动,会产生同样的后果。因...
教你什么才是真正的任意分频
一、为啥要说任意分频也许FPGA中的第一个实验应该是分频实验,而不是流水灯,或者LCD1602的"Hello World"显示,因为分频的思想在FPGA中极为重要。当初安排流水灯,只是为了能让大家看到效果,来激发您的兴趣(MCU的学习也是如...
对立统一——异步时钟同步化
一、什么是对立统一什么是CEO,就是首席执行官,是在一个企业中负责日常经营管理的最高级管理人员,又称作行政总裁,或最高执行长或大班。那么,在FPGA系统,需不需要一个最高级别的执行官,来管理所有进程呢?为了系统的有序性,不至...
FPGA的跨时钟域信号处理——专用握手信号
图1是一个跨时钟域的异步通信实例,发送域和接收域的时钟分别是clk_a和clk_b。这两个时钟频率不同,并且存在一定的相位差。对于接收时钟域而言,来自发送时钟域的信号data_a2b有可能在任何时刻变化。图1 跨时钟域通信对于...
【从零开始走进FPGA】边沿检测技术
一、为什么要讲边沿检测也许,没有那么一本教科书,会说到这个重要的思想;也许,学了很久的你,有可能不知道这个重要的思想吧。很惭愧,我也是在当年学了1年后才领悟到这个思想的。说实话,我的成长很艰辛,没有人能给我系统的指导...
分享调试SI4432的一些经验和程序
最近想做无线遥控,选用SI4432这个模块,因为这个芯片需要配置的寄存器比较多,调试的时候遇到了很多困难,在网上搜索了很久没找到几篇好的文章。曾多方求助,经过几天的努力终于将该模块调试成功。在此随笔写些调试的主要步骤...
学习51系列单片机个人经验
具体如下:1、学习电子技术基础知识,如电路、模拟电路和数字电路。这是学习电类相关专业的基础。2、学习计算机硬件知识,如计算机的简单组成原理(只需要了解),当然要知道CPU是什么?总线是什么?一些相关概念。3、程序编写的...
STM32串口中断接收方式详细比较
实例一:void USART1_IRQHandler(u8 GetData){u8 BackData;if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //中断产生{USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志.GetData = UART1_GetB...