seg

FPGA之静态数码管显示

一曲冷凌霜 提交于 2020-02-06 07:54:26
数码管显示0~F,每隔0.5秒变换一次 数码管连接方式不同分为 共阴极 数码管和 共阳极 数码管。 数码管引脚: 上图两个com引脚实际是连在一起的,其他引脚的公共端,称为 位选 ,位选的高低电平决定改数码管能否点亮,其他管脚为 段选 信号,决定数码管上哪个二极管发光。 共阴极数码管 连接方式 共阳极数码管连接方式: 共阳八段极数码管真值表 数码管原理图 以第五个数码管为例,LEDSEG CH6通过470R的电阻连接到Q6三极管的基极,第五个数码管的位选SEL5连接到Q6三极管的集电极,Q6三极管的发射极;连接电源。所以在代码中,只需将LEDSEG CH6(代码意义的位选)赋值为0(低电平),则数码管真正的选段就连通电源了,此数码管位共阳极数码管。在数码管电路图中,六个数码管公用八个段选信号,段选信号与FPGA管脚连接。所以,静态显示的时候,六个数码管显示的一样。 本次设计的系统框图 顶层模块原理图 顶层模块设计 module seg_led_static_top ( input sys_clk , //系统时钟 input sys_rst_n , //系统复位信号(低有效) output [ 5 : 0 ] sel , //数码管位选 output [ 7 : 0 ] seg_led //数码管段选 ) ; //parameter define parameter TIME

AC692X内置高低音 通过软件eq调节方法

依然范特西╮ 提交于 2020-02-04 00:48:03
某些大型的蓝牙音箱需要通过点位器调节高低音,高低音调节有硬件调节和软件调节两种方式,软件调节方式是通过调节内部软件eq的方式实现调节频点 低音:80~100HZ 高音10KHZ。 一、通过eq工具调节然后生成对应数组。 const int Seg1Coeff[][9][5] = { //154Hz Low Shelf Q=0.7 }; const int Seg2Coeff[][9][5] = { //90Hz Low Shelf Q=0.7 //segment_2 -12db { {2059346,-1010940,1034485,-2087398,1038993,},//44100 {2022547,-974636,1020892,-2077392,1029499,},//22050 {1951782,-905776,995111,-2056647,1010779,},//11025 {2062380,-1013947,1035611,-2088200,1039769,},//48000 {2028460,-980447,1023068,-2079035,1031036,},//24000 {1963035,-916640,999179,-2060083,1013797,},//12000 {2045316,-997059,1029288,-2083644,1035393,},

python中文文本分类

怎甘沉沦 提交于 2020-01-29 05:37:22
,中文文本分类流程: 预处理 中文分词 结构化表示-构建词向量空间 权重策略—TF-IDF 分类器 评价. 二,具体实现 预处理 1.1 打标签: 对评论数据打好标签,这里将汽车评论数据分为正面和负面两类。假设负面标签为0,正面标签为1. 1.2 整理数据集: 一般可分为训练集,验证集和测试集。为什么要这么分,这篇博文给了浅显的解释:训练集、验证集和测试集的意义本试验将数据分为训练集和测试集两类。 1.3 得到训练集预料库: 例如,训练集文本的路径:train_data/train_positive.xlsx , train_data/train_negtive.xlsx… 1.4 得到测试集语料库: 例如,测试集文本的路径:test_data/test_negtive.xlsx , test_data/test_positive.xlsx… 2 中文分词 2.1 概述 第1节预处理中的语料库都是没有分词的原始语料(即连续的句子,而后面的工作需要把文本分为一个个单词),现在需要对这些文本进行分词,只有这样,才能在基于单词的基础上,对文档进行结构化表示。 中文分词有其特有的难点(相对于英文而言),最终完全解决中文分词的算法是基于概率图模型的条件随机场(CRF),CRF的原理我们不细说了,直接调用中文分词的工具,这里用的是python第三方分词库jieba(所采用的算法就是条件随机场)

DTS和PTS的解释(FFMPEG、HLS相关)

隐身守侯 提交于 2020-01-25 00:53:04
转载请注明出处: http://www.cnblogs.com/fpzeng/archive/2012/07/26/dts_pts.html 原由: 近来在研究HLS(HTTP Live Streaming),以实现android上播放m3u8文件。由于TS段的切分不统一,每个视频网站给出的m3u8 playlists总有差别,在时间戳显示上有差异,所以对DTS和PTS进行了研究。 DTS和PTS是音视频同步的关键技术,同时也是丢帧策略密切相关。 dts/pts定义 dts: decoding time stamp pts: present time stamp 在ISO/IEC13818-1中制定90k Hz 的时钟,如果编码帧频是30,那么 时间戳 间隔就该是90000 / 30 = 3000。 在FFMPEG中有三种时间单位:秒、微秒和dts/pts。从dts/pts转化为微秒公式: dts* AV_TIME_BASE/ denominator 其中AV_TIME_BASE为1,000,000,denominator为90,000。 拿到m3u8播放列表后,首先进行解析。HTTP Live Streaming标准草案可以从这里 http://tools.ietf.org/html/draft-pantos-http-live-streaming-08 查看。

线段树 & 题目

非 Y 不嫁゛ 提交于 2020-01-23 13:08:42
首先说下我写的线段树吧。 我是按照线段树【完全版】那个人的写法来写的,因为网上大多数题解都是按照他的写法来写。 确实比较飘逸,所以就借用了。 节点大小是maxn是4倍,准确来说是大于maxn的2^x次方的最小值的两倍。 lson 和 rson 用宏定义写了。因为是固定的量。 线段树不必保存自身的区间,因为一边传递过去的时候,在函数里就有区间表示,无谓开多些无用的变量。 pushUp函数,更新当前节点cur的值,其实就是,线段树一般都是处理完左右孩子,然后再递归更新父亲的嘛,这个pushUp函数就是用来更新父亲的。感觉不用这个函数更加清楚明了。 pushDown函数,在lazy--upDate的时候有用,作用是把延迟标记更新到左右节点。 多次使用sum不用清0,add要。build的时候就会初始化sum数据。但其他用法就可能要 1 #define lson L, mid, cur << 1 2 #define rson mid + 1, R, cur << 1 | 1 3 void pushUp(int cur) { 4 sum[cur] = sum[cur << 1] + sum[cur << 1 | 1]; 5 } 6 void pushDown(int cur, int total) { 7 if (add[cur]) { 8 add[cur << 1] += add[cur]

【HAOI2015】树上操作

随声附和 提交于 2020-01-22 22:02:02
(题面来自洛谷) 题目描述 有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个节点 x 到根的路径中所有点的点权和。 数据范围:N <= 1e5 分析:简化版的ETT。建立括号序列,操作1、3都很容易解决。为了实现操作2,给序列上的点打标记,表示这里存储的是原节点权值的正/负值。用线段树维护区间和,上推时分别合并正负节点数,区间修改时每个线段树节点值 \(sum+=val*(pos-neg)\) ,这样就实现了正负节点的区分操作。同时要求移植子树就变成了ETT的模板题,用Splay/FHQ维护即可。 代码: #include <iostream> #include <cstdio> #include <cstring> const int maxn(100010); typedef long long LL; using namespace std; int n, m; LL wt[maxn]; int head[maxn], etop; struct E { int to, nxt; } edge[maxn<<1]; inline void insert(int u, int v) { edge[++etop]

【模板】树链剖分

百般思念 提交于 2020-01-20 00:36:48
树链剖分: 用于解决一系列维护静态树上信息的问题。这些问题看起来非常像一些区间操作搬到了树上。 (例如:一棵带权树,需要维护修改权值操作以及从$u$到$v$简单路径上的权值和) 树链剖分就是通过某种策略(一般是轻、重边剖分)将原树链划分成若干条链,每条链相当于一个序列,此时就可以用区间数据结构(一般是线段树)维护这些链。 需要维护的值: $f(x)$:$x$在树中的父亲。 $dep(x)$:$x$在树中的深度。 $siz(x)$:$x$的子树大小。 $son(x)$:$u$的重儿子:在$u$的所有儿子中$siz$值最大的儿子,$u\rightarrow v$为重边。 ($u$的轻儿子:在$u$的所有儿子中除了重儿子以外的儿子,$u\rightarrow v$为轻边。) $top(x)$:$x$所在重路径的顶部节点。 $seg(x)$:$x$在线段树中的位置(下标)。 $rnk(x)$:线段树中$x$位置对应的树中节点编号,即有$rnk(seg(x))=x$。 轻重边的一些性质: 1、如果$u\rightarrow v$为轻边,则$siz(v)<=siz(u)/2$。 证明:反证法,若存在$siz(v)>siz(u)/2$且存在$siz(v_0)>siz(v)$,那么$siz(v)+siz(v_0)>siz(u)$,即子节点的$siz$和大于父节点的$siz$。 2、从根到任何点$u

[模板]树链剖分

梦想与她 提交于 2020-01-20 00:34:07
link 树链剖分,感觉是一个很神奇的东西,但是其实并不是那样的 树链剖分其实就是一个线段树 线段树处理的是连续区间,所以当你要加的时候都是连续区间修改 所以可以用轻重链的方式将树分解成为链条,然后用线段树处理 可以很容易看到,为什么用的是dfs但不是用的是bfs呢 因为dfs保持了重链是连续的,所以可以用top[x]记录已x为节点的重链最上方,一个点也包含在重链内 若修改区间为(u,v),但是重链的祖先是一起的,所以当他们的LCA相同时,边break 所以现在u,v是连续的 所以查询(u,v)的简单路径和也就处理了 所以说线段树中可以进行的操作在树上也可以执行了 在处理一个问题 在u的子树上加w 所以修改的区间是u在线段树中的位置$(t)$ 到 $t+size(u)-1$ $size$ 记录以它为根 的子节点个数 $deep(x)$ 深度 $father(x)$ 记录父亲 $son(x)$ 它的重儿子 $top(x)$ 所在重路径的顶部节点 $seg(x)$ x在线段树中的编号 $rev(x)$ 线段树中x的位置所对应的树中节点编号 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; inline int

Ble Mesh技术(六)之Lower Transport Layer

北城余情 提交于 2020-01-15 02:07:20
下层传输层主要负责数据的分段与重组。下层传输层接收上层传输层的Access消息和Control消息。 1. 分段消息(Segmented Msg) 1.1. 分段接入层消息(Segmented Access Message) 分段接入层消息( 5-16字节 )的每个分段的结构如下: Field Size(bits) Notes SEG 1 SEG=1,表示当前消息是分段消息 AKF 1 AKF=1,表示使用Appkey加密;AKF=0,表示使用DevKey加密,AID=0b000000 AID 6 AppKey ID,当AKF= 1时有效 SZMIC 1 TtansMIC的大小。SZMIC=0,表示TransMIC为4字节;SZMIC=1,表示TransMIC为8字节 SeqZero 13 SeqAuth 的最低13位有效位 SegO 5 表示当前分段位第几个分段 SegN 5 表示此条消息总共有多少分段 Segment m 8-96 此分段的消息内容,只有最后一个分段的size才小于96 SeqN为5bit,说明最大支持32个分段,每个分段满载的payload为12字节,所以Upper Transport Layer下发的消息包括TransMIC最大为32*12=384字节。 对于同一条消息的不同分段,只有SegN和Segment m不同。 SeqAuth是第一个分段的IV

HDU 4325 线段树离散化

这一生的挚爱 提交于 2020-01-11 04:59:34
线段树离散化 1.输入完所有数据,对开花时间离散化 2.区间更新,点查询,LAZY操作。。 View Code #include<stdio.h> #include<stdlib.h> #include<string.h> #include<iostream> #include<vector> using namespace std; #define MAXN 51000 struct node { int left, right; int num; int sum; int lazy; }seg[500010]; int N, M; struct flower { int a,b; }p[101000]; int v[200010]; int hashx[201000]; void build(int l, int r, int root) { int mid = (l + r) / 2; seg[root].left = l; seg[root].right = r; seg[root].num = 0; seg[root].lazy = 0; seg[root].sum = 0; if( l == r ) { return; } build(l,mid,root*2); build(mid+1,r,root*2+1); seg[root].sum = seg[root*2]