自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 FIFO的使用和应用场景

fpga内部有一个16位的计数器,以50mhz的频率计数,此时,我们希望随机截取计数器连续256个计数周期的值发到电脑上进行分析处理。用串口发送到电脑上,(数据产生速率大于数据消费速率)此时需要使用存储器先将这256个数据存储起来,再由串口慢慢发送到电脑上,任意脉冲信号发生器:由电脑通过串口发送256个14位的数据到FPGA,FPGA再把这256个数据,以50MHZ的输出速率送给DAC,产生脉冲信号。对于fifo来说,写入的数据是16位,读出的数据可能是16位或者8位,串口接收的clk = 50MHZ。

2023-12-07 09:41:34 294

原创 时间管理单元介绍和应用

FCLK越大 ,fout (max)越大,将FCLK提高125MHZ ,从硬件的角度,开发板上只有一个50Mhz的有源晶振,使用verilog的方法从50mhz到125mhz的时钟信号是不可能的,使用fpga内部的专用电路FPGA内部的专用电路-锁相环来实现。对于普通用户,功能通过GUI的界面内容,帮助用户来创建自己的时钟网络,能够基于一个输入时钟源(晶振),进行分频,倍频,得到其他频率,相位,占空比的时钟信号,这个时钟管理器根据用户设置的参数,去生成配置fpga内部的时钟管理硬件资源。

2023-12-06 15:52:00 149

原创 verilog语言中条件编译ifdef的使用和例子

多个模块使得设计具有一定的层级结构,处于最上层的模块称之为顶层模块(top-level module)顶层模块引出的端口将会连接到FPGA器件的物理管脚上面,即连接到FPGA的外部芯片。如果ifdef后面的参数被编译过,则编译ifdef语句后的内容,忽略else后面的内容,如果ifdef后面的参数没有被编译过,则编译else语句后面的内容,条件编译的范围以ifdef开始,以endif结束,else部分可以没有。端口port用于设计模块对外接口信号的描述,不同模块之间通过PORT的连接定义数据交互。

2023-11-17 16:27:23 1403

原创 嵌入式系统第7章课后习题——Linux操作系统

虚实地址转换是指虚拟地址到物理地址的转换,这个转换是由硬件执行的,比如在ARM32 Linux系统中,每个进程都享有4G大小的虚拟地址空间,而物理地址大小要看设备配置了多大的物理内存,这个是实际存在的物理内存,比如2G。这时,操作系统会通过缺页异常机制将需要的页面从硬盘上的临时空间(即页面文件)中加载到物理内存中,并将虚拟地址和物理地址建立映射关系。物理地址指的是实际存在的物理内存地址,比如一个2G的内存芯片,系统的物理内存就是2G,需要访问该内存中的一个地址时,就需要对应的物理内存地址。

2023-11-15 10:00:11 363

原创 第五章ARM处理器的嵌入式硬件系统设计——课后习题

例如,假设有两个64位数A和B,可以将其拆分成高32位A_hi和低32位A_lo,以及高32位B_hi和低32位B_lo。然后使用ADD指令将A_lo和B_lo相加,将结果存储到C_lo中,再将A_hi和B_hi相加,将结果存储到C_hi中。例如,假设有两个64位数A和B,可以将其拆分成高32位A_hi和低32位A_lo,以及高32位B_hi和低32位B_lo。然后使用SUB指令将A_lo和B_lo相减,将结果存储到C_lo中,再将A_hi和B_hi相减,将结果存储到C_hi中。

2023-11-14 16:11:46 3138 1

原创 CPU组成与流水线设计——嵌入式第二章课后习题

设机器A的CPU主频位8MHZ,机器周期(即其流水线每阶段的时间)含有4个时钟周期,且该机的平均指令执行速度为0.4MIPS,求该机器的平均指令周期和机器周期,每条指令周期中含有几个机器周期?流水线定义:把一条指令的执行过程分为若干个阶段,每个阶段由相应的功能部件去完成,指令执行过程中,在不影响系统计算过程的情况下使各个操作阶段重叠,实现几条指令的并行处理。从而提高指令的吞吐率。2. CPI(每条指令的时钟周期数):表示执行某个程序时每条指令所需要的时钟周期平均数,是衡量CPU执行效率的指标。

2023-11-08 17:19:20 146

原创 数字通信和fpga概述——杜勇版本学习笔记

通常而言,在数字通信最常用的带宽就是主瓣宽度(null_to_null bandwidth),带宽的存在,复杂的电子电路中,存在大量的电感,电容,导线,都会对信号起到阻碍作用。严重的话会影响信号品质,这种效应与交流电的频率成正比。当频率高到一定程度,信号难以保持的时候,整个电子电路就无法正常工作,因此就有带宽的概念。

2023-11-08 17:16:18 589

原创 流水线相关和解决方案

延迟转移技术是指将转移指令与其前面的与转移指令无关的一条或几条指令对换位置,让成功转移总是在紧跟的指令被执行之后发生,从而使预取的指令不作废。哈佛结构由两个独立且分开的存储器组成,一个是程序存储器,另一个是数据存储器。1. 冯诺依曼结构更适合单功能流水线实现计算机体系,因为它将运算器和控制器等主要组件都集中在一个公共的存储器系统中,可以更好地管理和控制整个系统的资源。2数据相关:需要用到前面某条指令的结果,但是该指令仍然在流水线中,还没有将结果写入寄存器,这样两条指令重叠执行,就会产生数据相关。

2023-11-07 16:06:37 770

原创 嵌入式课后习题大题1

根据AMDAHL定律的分析,方案1在性能上更优,因为它能将系统的总运行时间从31.33s减少到22.5s。AMDAHL定律是一个用于评估系统性能的定律,它表示改进后的系统性能是各部件性能改进的乘积。现在有两种改进方案,我们要使用AMDAHL定律来分析这两个方案的优势。公式为:改进后的总时间 = (原始总时间 / 部件加速比) 的总和。设方案2中部件B的加速比为2.5,部件C的加速比为1.5。设方案1中部件A的加速比为4,部件B的加速比为2。方案2改进后的总时间是:31.33s。

2023-11-06 16:45:32 95

原创 FPGA设计过程中有关数据之间的并串转化

并串转化是指的是完成串行传输和并行传输两种传输方式之间的转换的技术,通过移位寄存器可以实现串并转换。串转并,将数据移位保存在寄存器中,再将寄存器的数值同时输出;并转串,将数据先进行移位,再讲寄存器中的最高位或者最低位的数据串行输出。(1)串并转换的关键是在于触发器链,通过依次移位,输出最终结果。(2)串并转换的思想是在设计中平衡面积和速度的要求,并行速度快,串行面积小。(3)串并转换常常在接口中出现,将高速并行转为串行数据输出,或将低速的串行数据转为并行数据后高速计算。

2023-11-06 14:49:41 1129

原创 嵌入式课后习题第一章解答

嵌入式第一章课后习题

2023-11-06 14:21:45 178

原创 LINUX操作系统简介

LINUX内核由五大部分组成,进程调度,内存管理,进程间通信,虚拟文件系统,网络接口,五个子系统组成。进程的基本概念1:程序是指令,数据,和组织形式的描述,在计算机中一般以文件的形式存在。2:进程是正在运行的程序的实例,在计算机中是操作系统动态执行的基本单元。3: 进程则是程序在计算机中的具体实现。进程是运行中的程序。进程是由代码段,用户数据,以及系统数据段共同组成的一个执行的环境。进程调度1.基本原理一个好的调度算法应当考虑以下几个方面1公平,高效,响应时间,周转时间,吞吐率。

2023-11-02 15:13:41 81

原创 ARM汇编程序设计——求一个数组的最大值和平均值

【代码】ARM汇编程序设计——求一个数组的最大值和平均值。

2023-11-01 11:04:20 425

原创 嵌入式汇编语言设计——冒泡排序

【代码】嵌入式汇编语言设计——冒泡排序。

2023-11-01 10:50:32 139

原创 嵌入式设计学习2

存储设计三个要素:速度,容量,价格;进行分层存储设计寄存器的性能主要是考虑三个方面进行设计:1命中率:在CPU访问存储系统的时候,在M1中找到所需要数据的概率。2平均访问时间。3存储位的平均价格。

2023-10-26 18:01:35 53

原创 嵌入式系统原理和设计——学习1

提高CPU的性能1 :嵌入式系统定义:IEEE : 嵌入式系统是“用于控制监视,或者辅助操作机器的装置。广义:“以应用为中心,以计算机技术为基础,软硬件可以剪裁,对功能,可靠性,成本,体积,功耗,有严格要求的计算机系统。嵌入式系统的特点:嵌入性,专用型,计算机系统,生命周期长,软件固化,有实时性要求。发展趋势:智能化,网络化,系统化,精简化,人性化。2:计算机系统组成硬件系统:运算器,控制器,存储器,输入设备,输出设备。存储器 内存储器:RAM;外存储器:硬盘。

2023-10-26 15:11:49 248

原创 认识,理解,并且运用FPGA中存储器

数据速率的问题: 1ms产生2000个字节的数据,2000个字节的数据,以115200的波特率发送,需要173.6ms才能发完。3 某芯片,一次完整的输出需要1024个14位的数据,该芯片开始工作后会循环持续的输出这1024个数据,但是用户希望能够通过串口俩改变着1024个数据的内容,以让该芯片在不同的工作阶段,获取的数据内容是不一样的。数据速率不匹配,数据消耗速率快于数据生产的速率,数据消耗的时候要求连续,使用一个管道,数据生产满512个字节之后,再让数据消耗模块开始一次的发送。

2023-10-24 17:24:17 167

原创 数据码和C/A码异或扩频模块

在卫星信号发射端,PRN编号为i的卫星首先将数据码与C/A码Gi异或相加,从而完成数据码对C/A码的调制。当数据码与C/A码异或相加,数据码与C/A码异或相加时候,数据码的每一个比特变成20周期的C/A 码或他们的反向值。原先码率为50bps的数据码的频宽一下子扩大,因此这个过程也可以叫扩频调制。

2023-10-24 16:14:42 107

原创 伪卫星信号设计中有关C/A码生成模块

c/a码的设计和结构示意图参考GPS原理和接收机设计本书,从结构图上看,G1序列和G2序列都是m序列,C/A码是G1序列和G2等价序列(选取特定相位值)G2i序列的模二和所构成的。同时初步考虑设计十级移位寄存器的值全都为1 ,只考虑C/A码的生成模块,不对时钟的分频模块进行设计。设计出合理的C/A码产生模快。通过改变不同的相位选择值可以产生出不同的对应于PRN序列的卫星标号对应关系间下表。

2023-10-24 15:48:18 285

原创 ACX720开发板关于串口多字节发送模块学习——参考教材小梅哥版本

本次设计运用了合理的拆分字节发送,将多个字节的发送拆分成单个字节的发送,通过FSM状态机的设计来判断字节发送中各种情况和步骤,设计思路很巧妙,层次化设计明显。

2023-10-19 11:26:45 229

原创 ACX720开发板串口接收模块学习总结——参考教程小梅哥版本

我们进行累加采样的时候只要累加采样点的中间频段,下一位采样的时候只要加16,也就是这个字所占用的总的clk时钟,如果bps_counter 计数器开始采样的时候,也就是第12个时钟沿到来的时候,此时start。采样思路,当数据线上出现下降沿,采取数据的中间段,并分为6次采用,如果采样的数值的总数大于2,说明该数据出现3次或者三次以上的高电平,那么就不可能符合采样起始数据要求的持续的低电平要求,说明此时的下降沿看作是干扰信号,而不是采样信号。当计数到1的时候,时钟频率拉高,其它的时刻时钟的频率为0。

2023-10-17 09:51:03 318

原创 ACX720学习板中串口发送与验证模块的总结——参考小梅哥教程

波特率是如何计算: 举例 :假设系统时钟频率为50mhz 系统的周期就是20ns,假定波特率为9600hz 波特率周期则为104167ns,波特率分频计数值 104167 / 20 = 5208 从0开始计数 ,也就是9600hz波特率下面, 要传输1bit的信号,50mhz的系统时钟需要计数 5208 -1 次 ,下图为四种常见的波特率时钟的计数方法。从系统总体设计框图可以看出,当数据寄存一拍稳定后,通过一个十选一多路选择器,控制选择数据,根据bps_cnt的值来选择对应的传输数据。

2023-10-16 11:13:15 209

原创 牛客网中使用子模块调用实现数据比较vl9

请编写一个子模块,将输入两个8bit位宽的变量data_a,data_b,并输出data_a,data_b之中较小的数。并在主模块中例化,实现输出三个8bit输入信号的最小值的功能。题目总结:本文采用的是主模块调用子模块进行三个数之间的比较,其中子模块中实现的功能是两个数两两之间进行比较的功能。在数字芯片设计中,通常把完成特定功能且相对独立的代码编写成子模块,在需要的时候再在主模块中例化使用,以提高代码的可复用性和设计的层次性,方便后续的修改。d:8bit位宽的无符号数,表示a,b,c中的最小值。

2023-07-02 12:47:05 90

原创 使用函数实现数据大小段转换newcoder_10

VL10 使用函数实现数据大小端转换中等 通过率:14.13%

2023-07-02 12:17:37 63

原创 输入不连续序列检验-v28_newcoder

题目描述:请编写一个序列检测模块,输入信号端口为data,表示数据有效的指示信号端口为data_valid。当data_valid信号为高时,表示此刻的输入信号data有效,参与序列检测;当data_valid为低时,data无效,抛弃该时刻的输入。当输入序列的有效信号满足0110时,拉高序列匹配信号match。模块的接口信号图如下:模块的时序图如下:请使用状态机实现以上功能,画出状态转移图并使用Verilog HDL编写代码实现以上功能,并编写testbench验证模块的功能.

2023-07-02 12:05:04 82

原创 牛客网——Vl27不重叠序列检验

VL27 不重叠序列检测较难 通过率:9.83%

2023-06-30 20:00:41 113

原创 含有无关项的序列检验——牛客网刷题总结

请编写一个序列检测模块,检测输入信号a是否满足011XXX110序列(长度为9位数据,前三位是011,后三位是110,中间三位不做要求),当信号满足该序列,给出指示信号match。程序的接口信号图如下:程序的功能时序图如下:请使用Verilog HDL实现以上功能,并编写testbench验证模块的功能。要求代码简洁,功能完整。

2023-06-29 15:36:54 83

原创 牛客网有关序列检测换题型总结

引用ciscomonkey博主文章下面举一个例子说明一下怎么样进行移位11111循环向右边移动循环向左边移动00000循环向右边移动相当于把最低位提到最高位然后进行移动循环向左边移动相当于把最高位提到最低位然后进行移动。

2023-06-28 18:01:23 61

原创 vl_39 自动贩卖机题目2

设计一个自动贩售机,输入货币有两种,为0.5/1元,饮料价格是1.5/2.5元,要求进行找零,找零只会支付0.5元。ps:1、投入的货币会自动经过边沿检测并输出一个在时钟上升沿到1,在下降沿到0的脉冲信号2、此题忽略出饮料后才能切换饮料的问题注意rst为d1 0.5d2 1sel 选择饮料out1 饮料1out2 饮料2out3 零钱。

2023-05-30 15:31:59 216

原创 牛客网有关智能售卖机题目的写法vl_38题

now_coder_vl刷题记录

2023-05-29 18:28:51 130

原创 异步fifo的一些实现方法过程

1.3牛客网vl_45刷题总结。

2023-05-22 11:15:58 404

原创 new_coder vl_47题同步fifo设计刷题体会心得

根据题目提供的双口RAM代码和接口描述,实现同步FIFO,要求FIFO位宽和深度参数化可配置。电路的接口如下图所示。端口说明如下表。input写数据时钟input写使能input写地址input输入数据input读数据时钟input读使能input读地址output输出数据input时钟input异步复位input写使能input读使能input写数据output写满信号output读空信号output读数据双口RAM代码如下,可在答案中添加并例化此代码。

2023-05-18 18:52:45 74

原创 北斗卫星系统中几种常见编码的性能比较

weil码的编码方法,相对于gold码的编码方式更为优秀,互相关特性和自相关特性都要好,但是设计方面更为复杂,程序设计更为复杂,gold码虽然并没有weil码的性能那么好,也就差一点点,但是也具有较好的自相关和互相关特性,编码方式更为简单。

2023-04-24 16:43:13 2002

原创 new_code_vl_44刷题心得

如图所示为两种状态机中的一种,请根据状态转移图写出代码,状态转移线上的0/0等表示的意思是过程中data/flag的值。要求:1、 必须使用对应类型的状态机2、 使用二段式描述方法注意rst为。

2023-04-23 15:23:09 81

原创 newcoder vl_44题二段式状态机刷题笔记

从题目类型上看,系统的输出和系统的次态和系统此时的输入有关系,所以从这个状态转换图可以看出,这应该是一个Melay类型的状态机,同时要求采用三段式进行书写,第一段用时序逻辑描述状态转移变换,第二段用组合逻辑判断状态转移条件,并且描述状态转移和输出,第三段还是采用组合逻辑进行设计,描述结果输出;如图所示为两种状态机中的一种,请根据状态转移图写出代码,状态转移线上的0/0等表示的意思是过程中data/flag的值。2、 使用三段式描述方法,输出判断要求要用到对现态的判断。1、 必须使用对应类型的状态机。

2023-04-23 15:11:35 86

原创 用matlab设计一个序列并且求出其自相关函数和互相关函数

m序列是最长序列的简称。它是由带线性反馈的移存器产生的周期最长的序列。一般来说,一个n级线性反馈移存器可能产生的最长周期等于(2^n -1)。m序列是一种典型的。在通信领域有着广泛的应用,如扩频通信、卫星通信的码分多址(CDMA),数字数据中的加密、加扰、同步、误码率测量等领域。

2023-04-15 17:12:19 1329

原创 数字电路中有关奇数偶数分频心得

实现分频一般有两个方法,一个方法是直接使用 PLL 进行分频,比如 FPGA 或者 ASIC 设计中,都可以直接使用 PLL 进行分频,但是这种分频倍数有时候受限于 PLL 本身的特性,比如输入 100Mhz 时钟,很多 PLL 都实现不了分频到 1Mhz 的时钟,这个就是 PLL 本身特性限制的。还有一种实现方法就是直接使用逻辑实现,即使用代码实现分频设计。我们本节介绍的是使用代码进行设计分频器。本节我们先看下偶数分频设计。

2023-04-15 16:29:19 598

原创 基于Verilog设计的复位电路设计

复位指的是将寄存器中的值全部置成默认值,一般复位包括同步复位和异步复位,复位可以由硬件开关控制,也可以由软件逻辑控制。复位电路复杂是因为复位本身是对大规模的硬件单元进行一种操作,必须要结合底层的设计来考虑问题。相信大家在学习 FPGA 或者 ASIC 的时候都有如下的疑问:1、 数字逻辑为什么需要复位?2、 FPGA 板上面没有复位按键怎么办?3、 复位只有通过按键复位一个控制方式吗?4、 同步复位好还是异步复位好呢?5、 复位是高电平有效还是低电平有效好呢?

2023-04-15 15:58:59 1250 2

原创 matlab_学习

有关子图的subplot的一些使用方法。

2023-04-15 15:17:44 44

原创 基于veirlog格雷码与二进制码之间的相互转换

数字电路中,如果有采用二进制之间的状态转化可能会造成电路出现亚稳态状态,二进制进行数制状态转换的时候,容易产生多位数字的状态之间的跳变,容易产生竞争和冒险,因此在电路设计的时候应该尽量的规避这种情况的生并且设计出更为合理的结构状态转换关系;格雷码就很好的解决了这种问题,格雷码在状态转换的时候,,每个状态之间的状态变换,只有相邻一位之间不同,可以很好的解决竞争和冒险这个问题;

2023-04-11 19:34:34 206

空空如也

空空如也

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

TA关注的人

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