为什么不能在两个 always 块中赋值同一个变量?
verilog 本身不允许两个 always 块赋值同一个变量,如果你这么写了,它会将两个块用自己的方式组合起来,这会造成不可预知的错误,所以尽量避免这种写法。
always 块的作用?
always语句块从仿真0时刻开始执行其中的行为语句;最后一条执行完成后,再开始执行其中的第一条语句,如此往复循环,直到整个仿真结束。所以它叫 always 嘛
自己去试试看啦!
强制转换 void pointer to the pointer user want, like (int *) means force change void * to int *
因为在给出的范例代码中有调用同一个文件夹里上一个 module 的操作,于是四处寻找了一下调用的语法规范。
范例代码中的模块变量与所调用的模块的端口顺序摆放一致
1 | module sevenseg( |
那么在调用的时候是这样的
1 | sevenseg A1 (sum[3:0],a,b,c,d,e,f,g); |
因为要写 verilog 所以让我们升级一下 vim 来更好的打代码……说来惭愧这么多年我真的使用 vim 都是很浅薄的水准,我谢罪。
有用包管理器的方法,不过我们先原始一下……如果你要安装一个名为 foo 的插件
1 | mkdir -p ~/.vim/pack/foo |
其中 mkdir -p 表示创建 parent 目录如果需要的话,若是存在也不报错
然后 vim 将会在 run 的开始检测 pack/*/start 中的 plugin,然后将它们加入 runtimepath 中,现在的目录看起来会是这样
我不知道是 ubuntu 要额外安装 lib 的操作,还是 linux 共性如此……总之,如果没有安装 cable driver 的话,那么插入 FPGA dev broad 是无法被识别的。我手上的是 NEXYS A7,所以使用的是 vivado。
总之先去安装目录里面(默认是/tools/Xilinx),找到 install_drivers
find -name install_drivers
当然名字可能有些许不同,不过大概率在 cable_drivers 下面,总之是不是的……嗯你感觉是打开看看,大概就清楚了(大概吧
记得做好备份,万一弄错了呢?
啊!是时候观鸟鸟鸟鸟……那么哪里可以看看呢?
旁边的 sand valley 还是去一下,毕竟最近的嘛,虽然似乎没有很罕见的鸟鸟,但是骨顶鸡也可爱爱!
https://www.birdspot.co.uk/days-out/10-uk-bird-watching-spots
这个推荐的不错,喂红隼的 Gigrin farm 可以圣诞假去!顺便去威尔士旅行一下啦啦啦~ 苏格兰高地有松鸡,但是要确认一下出现地点才行
五月岛记得预约!七月要上岛大概得五月就抢(真符合名字)看海鹦筑巢啊,大嘴萌萌鸟~附近似乎有塘鹅,但是那个岛似乎很难去到来着……我觉得我可以连续约个三天的上岛,不不不太过分还是两天就好了。
找到 settings64.sh,默认安装地址是 /tools/Xilinx/Vivado/2019.1/settings64.sh, 然后执行命令
1 | source /tools/Xilinx/Vivado/2019.1/settings64.sh |
然后就能启动了
未解之谜:
注意一下pr之后不要手动 rebuild !会卡在上一个版本,等travis自己检测到了再说!它会自己rebuild的!
选择 scheme
短文章
命名管道使用?