bonewp blog


  • 首页

  • 分类

  • 标签

  • 归档

  • 关于

  • 搜索
close

const限定符相关

发表于 2016-08-18   |   分类于 study notes   |  

阅读const限定符一节的时候很是绕了点,发现这里很容易混淆,所以记录一下。

在需要定义变量的值不能被改变的时候,使用const加以限定,如const int buffSize = 512;这里是指变量本身是常量。

而在定义引用和指针的时候,注意是指引用或指针是指向常量的引用或指针,如const int *p;,这里指针p是指向常量的指针(pointer to const), p指向的值必须是一个const类型,而p本身的值(即所存储的地址)则可以改变。这里一定要明确的概念就是指向常量的引用/指针不能用于改变其绑定/所指对象的值。

由于引用在初始化后不能再更改绑定对象,不用多说。而要让指针本身是常量的话,需要使用*const来定义常量指针(const pointer)。

1
2
int *const p = &i; //p本身的值不能再改变,始终指向i
const int *const pip = π //pip是一个指向常量的常量指针

由此可见,指针本身是常量和指向的对象是常量为两个独立问题。

用名词顶层const(top-level const)表示指针本身为 常量,而用名词底层const(low-level const)表示指针所指的对象为一个常量。

顶层const可用于基本类型在内的任意对像,而底层const则与指针和引用等复合类型的基本类型部分有关。

术语:何为对象

发表于 2016-08-17   |   分类于 study notes   |  

最近腾出点时间复习C++,准备把C++ Primer好好看一遍。

在P39上看到一个有趣的地方,什么是术语?书上给的解释是:

通常情况下,对象是指一块能存储数据并具有某种类型的内存空间。

以前接触对象这个概念,总是基于面向对象之类的东西来说,一直感觉比较抽象。而这个从偏硬件的角度的解释,让我有一种豁然开朗的感觉,特别是在现在用FPGA用得多了之后。

就像对FPGA代码最终要映射到FF、LUT等单元,对软件而言高级语言最终是要对应CPU对内存上的一段数据进行操作,这样刚才对象的解释也就能明白了。

verilog中的加法

发表于 2016-08-11   |   分类于 study notes   |  

这两天调一个项目的时候涉及到了符号数的加法和限幅,调了好久才发现这里面的坑。。瞬间觉得自己基础有待提高啊

符号数的加法

用补码来表示符号数,对两个符号数相加可以直接加法赋值,如下列代码,这是由补码的特性决定的,非常方便。

1
2
3
4
5
wire [31:0] sig_1;
wire [31:0] sig_2;
wire [31:0] add_ans;
assign add_ans = sig_1 + sig_2;

加法溢出的处理

然而固定位数的加法会出现溢出的问题,要为结果考虑进位,因此为结果多添加一位。此时一定要注意!

符号数加法要进行符号位扩展!!

当时没有注意到这个,死活不知道为什么结果的进位消失了…示例代码

1
2
3
4
5
wire [31:0] sig_1;
wire [31:0] sig_2;
wire [32:0] add_ans;
assign add_ans = {sig_1[31], sig_1} + {sig_2[31], sig_2};
阅读全文 »

写markdown时用到的特殊用法

发表于 2016-08-09   |   分类于 工具使用   |  

我在用Markdown写东西的时候,有时候用到了一些奇奇怪怪的用法,这里记录下来以便之后查阅。

makedown通用语法相关

上下标

将需要修改为上下标的文字用html标签包裹即可。如下:
上标:<sup> sup_text </sup>
下标:<sub> sup_text </sub>

文章内跳转

将需要跳转至的地方加上html的id属性,形如:<span id="where_jump_to"> text </span>
再在需要设置跳转的地方使用Markdown的链接语法,形如:[text](#where_jump_to)

这里测试一下跳转至上下标。

阅读全文 »

Vivado IO Constraint

发表于 2016-07-13   |   分类于 study notes   |  

IO delay

Input delay


数据相对于上升沿往后的延迟。
inputDelay_1
inputDelay_2
Example code:

1
2
3
create_clock -name sysClk -period 10 [get_ports CLK0]
set_input_delay -clock sysClk -max 4 [get_ports DIN]
set_input_delay -clock sysClk -min 1 [get_ports DIN]

若不考虑板级延迟,那就可根据前级芯片的建立/保持时间来推算此MAX/MIN的值。

阅读全文 »

Hello World

发表于 2016-07-13   |  

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

123
Peng Wei

Peng Wei

かわいいでしょう

26 日志
6 分类
25 标签
Links
  • Github
© 2017 Peng Wei
由 Hexo 强力驱动
主题 - NexT.Mist