FPGA开发与ARM(单片机)开发的区别
我是同时做过FPGA开发(verilog)与ARM(c)开发,有很多人说学了单片机再学习FPGA会比较好过度。理由是单片机的C语言与FPGA的verilog语言很像。我不太赞成这一个说法,理由是:单片机的C语言是串行执行的,FPGA的verilog是并行执行的。虽然两者看上去语法差不多,但是语言所代表的含义完全不同。C语言最终到芯片中后是二进制代码,verilog语言最终到芯片是电路。举个例子,同样实现两个led灯的闪烁,一个是10hz,一个是5hz。
/********************************************************************************************************************************/
void isr(void){//1ms的中断
static u32 cnt_led1,cnt_led2;
cnt_led1++;
cnt_led2++;
if(cnt_led1>=50)
{
LED1=~LED1;
cnt_led1=0;
}
if(cnt_led2>=100)
{
LED2=~LED2;
cnt_led2=0;
}
}
int main(void)
{
INIT_LED();
INIT_ISR();
while(1)
{
}
}
/**********************************************************************************************************************************/
module LED(
CLK,
LED1,
LED2
);
input wire CLK;
output reg LED1=0;
output reg LED2=0;
reg [31:0]cnt1=0;
reg [31:0]cnt2=0;
always@(posedge CLK)//在时钟上升沿干的事情1
begin
if(cnt1<50*1000*50)begin
cnt1<=cnt1+1;
end
else begin
LED1<=~LED1;
cnt1<=0;
end
end
always@(posedge CLK)//在时钟上升沿干的事情2
begin
if(cnt2<50*1000*100)begin
cnt2<=cnt2+1;
end
else begin
LED2<=~LED2;
cnt2<=0;
end
end
endmodule
/**********************************************************************************************************************************/
可以发现,单片机实现两个“任务”可以用定时器中断实现,本质意义上来说是串行执行。
FPGA实现两个“任务”可以用时钟上升沿触发,而且一个时钟上升沿可以触发多个“任务”。
/**********************************************************************************************************************************/
再举个例子,输出3路12bit的DAC。
/********************************************************************************************/
unsigned int get_dac1;
unsigned int get_dac2;
unsigned int get_dac3;
int main(void)
{
DAC_INIT();
while(1){
*((unsigned int *)DAC1)=get_dac1&0x3ff;//第一步
*((unsigned int *)DAC2)=get_dac2&0x3ff;//第二步
*((unsigned int *)DAC3)=get_dac3&0x3ff;//第三步
}
}
/********************************************************************************************/
module OUT_DAC(
CLK,
DAC1,
DAC2,
DAC3,
BUFF_DAC1,
BUFF_DAC2,
BUFF_DAC3
);
input wire [11:0]BUFF_DAC1;
input wire [11:0]BUFF_DAC2;
input wire [11:0]BUFF_DAC3;
output reg [11:0]DAC1;
output reg [11:0]DAC2;
output reg [11:0]DAC3;
always@(posedge CLK)
begin
DAC1<=BUFF_DAC1;//第一步
DAC2<=BUFF_DAC2;//与上一步是同时执行
DAC3<=BUFF_DAC3;//与上一步是同时执行
end
endmodule
/********************************************************************************************/
从上面的例子我们可以得到:ARM的3个DAC输出是有先后的,FPGA的3个DAC输出是没有先后的。
所以我们常常听到别人说,FPGA比ARM运行速度“快”!
/********************************************************************************************/
FPGA开发与ARM(单片机)开发的区别相关推荐
- 一款简单易上手的ARM单片机开发IDE—STduino
一款简单易上手的ARM单片机开发IDE-STduino 前言 STduino介绍 前言 第一眼看到这个IDE,第一反应就是名字有点像TrueSTUDIO,然后我上网查了一下,当然是没有关系的,只能说是 ...
- TM4C123系列ARM单片机开发入门介绍
初学TM4C123GH6PZ,以前未接触过ARM,所以感觉一头雾水.根据自己以前C51的简单经验,对照资料很少的ARM4教程,摸索着终于明白了开发流程,从软件到硬件用自己的程序点亮了LED.现将自己的 ...
- 嵌入式开发要难于单片机开发?
关注.星标公众号,直达精彩内容 ID:技术让梦想更伟大 来源:网络素材 单片机和嵌入式,其实没有什么标准的定义来区分他们,对于进行过单片机和嵌入式开发的开发者来说,都有他们自己的定义,接下来,就谈谈本 ...
- PLC,DSP,ARM,单片机有什么区别?
自二十世纪六十年代美国推出可编程逻辑控制器(Programmable Logic Controller,PLC)取代传统继电器控制装置以来,PLC得到了快速发展,在世界各地得到了广泛应用.同时,PLC ...
- 基于stm32mp157 linux开发板ARM裸机开发教程4:Cortex-A7 内核存储系统与流水线(连载中)
前言: 目前针对ARM Cortex-A7裸机开发文档及视频进行了二次升级持续更新中,使其内容更加丰富,讲解更加细致,全文所使用的开发平台均为华清远见FS-MP1A开发板(STM32MP157开发板) ...
- 基于stm32mp157 linux开发板ARM裸机开发教程3:Cortex-A7 架构与工作模式(连载中)
前言: 目前针对ARM Cortex-A7裸机开发文档及视频进行了二次升级持续更新中,使其内容更加丰富,讲解更加细致,全文所使用的开发平台均为华清远见FS-MP1A开发板(STM32MP157开发板) ...
- 项目开发中ARM单片机芯片分类及选型
项目开发中单片机芯片的选型是一件重要而费心的事情 , 如果芯片型号选择得合适 , 单片机应用系统就会得经济 , 工作可靠 ; 如果选择得不合适 , 就会造成经济浪费 , 影响单片机应用系统的正常运行 ...
- 开发板ARM+FPGA架构运动控制卡 运动控制器
开发板ARM+FPGA架构运动控制卡 运动控制器 本运动控制卡采用ARM单片机+FPGA架构: ARM单片机是基于Cortex-M3内核的LM3S6911,插补核心算法均在该ARM内完成,一方面通过以 ...
- 开发板ARM加FPGA架构运动控制卡 运动控制器 架构源码 原理图 资料包含此运动控制卡原理图,PCB图
开发板ARM加FPGA架构运动控制卡 运动控制器 架构源码 原理图 资料包含此运动控制卡原理图,PCB图, FPGA 源码,ARM去掉算法后的框架源码. 注意实物图是旧版的,出售的图纸是新版本的,元器 ...
最新文章
- WINCE6.0+S3C6410的触摸屏驱动
- 暂时放在首页,因为需要大家帮忙!!
- java数据结构博客园_常见数据结构的Java实现
- 开源字符处理类库:CharString类 拆分自自己研发的web服务器中的类库
- 关于Redis热点key的一些思考
- 50个技巧提高你的PHP网站程序执行效率
- 【消息轰炸】Python消息轰炸
- 一个快播倒下去,千千万万个快播站起来
- 《统计学》第八版贾俊平第三章课后答案Excel
- 笔记 c语言99乘法表
- als算法参数_推荐算法之ALS
- markdown文件怎么转换成html,将markdown文件转换为html文件(MarkdownPad)
- Java导出Excel文档(poi),并上传到腾讯云对象存储服务器
- vue 右键菜单contextMenu
- 数论作业 —— 公约数公倍数问题
- Echarts x轴字体倾斜
- 高中计算机二级考试试题,高中二年级全国计算机等级考试试题.doc
- 当类型设置为Integer时,传入的值为0,会将其转化为空字符串,从而造成查询数据异常
- 如何选择专业的海关数据公司合作
- 构成中学计算机教学系统的要素包括,教学策略就是对完成特定的教学目标而采用的教学活动的()要素的总体考虑...
热门文章
- 【腾讯TMQ】众测实战经验小结
- 智能电子秤方案控制板设计开发
- FBI教你读心术-1节
- 【PHP学习】—apache配置虚拟主机(基于域名)
- 潘爱民:Windows系统程序员的“内功”修炼
- Mac cocoapods安装步骤
- Conditional Random Fields:ProbabilisticModels for Segmenting and Labeling Sequence Data
- 【论文笔记】SCOAT-Net: A novel network for segmenting COVID-19 lung opacification from CT images
- 【深度学习】【实例分割】SOLO:Segmenting Objects by Locations
- 2017传感器总体发展趋势分析