de1-soc开发板

Terasic友晶科技3 天前
fpga开发·定时器·de1-soc开发板·linux设备驱动程序
第20篇:Linux设备驱动程序入门<七>Q:如何编写定时器中断驱动内核模块?A:使用在FPGA中实现的间隔定时器FPGA Timer0,寄存器接口基地址为0x00002000,时钟频率100MHz,中断ID为72。调用这个定时器需要向Counter start value寄存器写入适当的值(有两个Counter start value寄存器,一个存储32位定时器值中的高16位,另一个存储低16位);通过程序将TO位写为0,即可将其值清零。如果Control寄存器中的ITO位为1,则每次设置TO位的时候,定时器将产生一个ARM中断。
Terasic友晶科技17 天前
fpga开发·嵌入式系统·de1-soc开发板
第13篇:Linux程序访问控制FPGA端Switch<二>Q:如何写.c代码读取滑动开关SW的值显示在数码管HEX上?A:DE1-SoC开发板10个滑动开关可设定表示的二进制数为11 1111 1111~00 0000 0000,将其转换为十进制数即1023~0,本次实验将开关设定的值以十进制数形式显示在4个数码管上。如以下部分代码,开关的值SW_value/1000再左移24位,表示将十进制数的千位显示在HEX3上,[SW_value%1000]/100再左移16位表示将十进制数的百位显示在HEX2上,以此类推将十位数和个位数分别显示在HEX1和HEX0上。
Terasic友晶科技1 个月前
fpga开发·嵌入式系统·de1-soc开发板
第7篇:Linux程序访问控制FPGA端LEDR<五>Q:如何设计.c程序代码实现FPGA端外设LEDR流水灯?A:在DE1-SoC开发板上实现的流水灯效果:一次只点亮一个红色LED,初始状态为向左移动直至点亮LEDR9,然后改变移动的方向为向右直至点亮LEDR0,以此循环往复,同样可通过调用Linux库函数 nanosleep() 使LEDR以适当的速度移动。
Terasic友晶科技1 个月前
fpga开发·de1-soc开发板·linux嵌入式程序
第4篇:Linux程序访问控制FPGA端LEDR<二>Q:DE1-SoC_Computer系统的ARM A9处理器和FPGA端I/O怎样进行数据传输?A:DE1-SoC_Computer系统包含了连接FPGA端I/O外设的并行端口,例如LEDR并行端口,该端口通过Lightweight HPS-to-FPGA桥接器映射到地址始于0xFF200000的ARM内存映区域。并行I/O端口以不同的偏移量映射到桥接器的地址空间,任何端口的物理地址是0xFF20000+偏移量。LEDR端口的偏移量为0,物理地址就是0xFF20000+0x0=0xFF200000。LED
Terasic友晶科技1 个月前
fpga开发·嵌入式系统·de1-soc开发板
第3篇:Linux程序访问控制FPGA端LEDR<一>Q:如何在DE1-SoC-UP Linux系统中访问控制FPGA端外设呢?A:DE1-SoC-UP Linux系统启动的过程中会自动配置Cyclone V SoC FPGA,系统将SoC设备配置到DE1-SoC_Computer系统的电路,其中包含一个双核ARM Cortex-A9处理器,以及与DE1-SoC板上的外设如SW、LED、Button、VGA等IP核。
Terasic友晶科技3 个月前
c语言·de1-soc开发板·按键和定时器中断
第28篇 基于ARM A9处理器用C语言实现中断<四>Q:可以改变上一期实验工程里红色LED计数的速率吗?A:在按键中断服务程序中使HPS Timer 0停止计数,修改定时器中使用的预设计数值,然后重启定时器;所有的修改都是在按键中断服务程序中完成。主程序和其他代码都不需要变动。
Terasic友晶科技3 个月前
c语言·fpga开发·中断·de1-soc开发板
第26篇 基于ARM A9处理器用C语言实现中断<二>Q:基于ARM A9处理器怎样编写C语言工程,使用按键中断将数字显示在七段数码管上呢?A:基本原理:主程序需要首先调用子程序set_A9_IRQ_stack()初始化IRQ模式的ARM A9堆栈指针;然后主程序调用子程序config_GIC()初始化通用中断控制器(GIC)以及config_KEYs()初始化按键端口来产生中断。最后调用子程序enable_A9_interrupts()取消屏蔽ARM处理器中的IRQ中断;初始化步骤完成之后,主程序在无限循环中被挂起。
Terasic友晶科技4 个月前
c语言·fpga开发·中断·de1-soc开发板
第25篇 基于ARM A9处理器用C语言实现中断<一>Q:怎样理解基于ARM A9处理器用C语言实现中断的过程呢?A:同样以一段使用C语言实现中断的主程序为例介绍,和汇编语言实现中断一样这段代码也使用了定时器中断和按键中断。执行该主程序会在DE1-SoC的红色LED上显示流水灯,按下KEY1可以改变流水灯移动的方向。定时器中断服务程序用于控制流水灯的速率,而按键中断服务程序就用于控制按键产生中断。
Terasic友晶科技4 个月前
fpga开发·汇编语言·de1-soc开发板·按键和定时器中断
第22篇 基于ARM A9处理器用汇编语言实现中断<四>Q:怎样编写ARM A9处理器汇编语言代码配置使用按键和定时器中断?A:本次实验同样为中断模式和监督模式都设置ARM A9堆栈指针,并使能中断,此外在主程序中调用子程序CONFIG_HPS_TIMER和CONFIG_KEYS分别对HPS Timer 0(100MHz时钟)和按键KEY进行配置,使定时器产生某个周期的中断。
Terasic友晶科技4 个月前
fpga开发·汇编语言·de1-soc开发板·定时器中断周期
第23篇 基于ARM A9处理器用汇编语言实现中断<五>Q:怎样修改HPS Timer 0定时器产生的中断周期?A:在上一期实验的基础上,可以修改按键中断服务程序,实现红色LED上的计数值递增的速率,主程序和其余代码文件不用修改。
Terasic友晶科技4 个月前
fpga开发·汇编语言·中断·de1-soc开发板
第20篇 基于ARM A9处理器用汇编语言实现中断<二>Q:怎样理解在ARM A9处理器中用汇编语言实现中断的过程和原理呢?A:以下是一段在ARM A9处理器中使用汇编语言实现中断的示例主程序代码,该代码的开始部分创建异常向量表,矢量表中的条目提供了跳转到各种异常服务程序的指令;然后中间部分代码初始化定时器和按键的子程序;最后部分是程序用到的全局变量。主程序调用子程序初始化HPS Timer、FPGA Interval Timer以及FPGA KEY;最后程序初始化HPS GPIO1端口,使能A9处理器中的IRQ中断然后进入无限循环,当全局变量tick在HPS
Terasic友晶科技4 个月前
fpga开发·汇编语言·中断·de1-soc开发板
第21篇 基于ARM A9处理器用汇编语言实现中断<三>Q:怎样编写ARM A9处理器汇编语言代码配置按键端口产生中断?A:使用Intel Monitor Program创建中断程序时,Linker Section Presets下拉菜单中需选择Exceptions。主程序在.vectors代码段为ARM处理器设置异常向量表,在.text代码段主程序为中断模式和监督模式都设置堆栈指针,初始化通用中断控制器(GIC),配置按键端口以产生中断,最后在处理器中使能中断。
Terasic友晶科技4 个月前
汇编语言·中断·de1-soc开发板
第19篇 基于ARM A9处理器用汇编语言实现中断<一>Q:DE1-SoC_Computer系统的异常与中断有哪些特点呢?A:DE2-115 Computer系统中的ARM Cortex-A9处理器支持8种类型的异常,包括reset和interrupt request(IRQ)以及一些故障导致的异常,详细异常类型与异常处理过程在Introduction to the ARM Processor文档中进行了介绍。IRQ异常允许I/O外设产生中断,中断发生时在处理器中会引起一个IRQ异常。所有外设产生的中断都会引起IRQ异常,每个外设都在通用中断控制器(GIC,G