- 博客(23)
- 收藏
- 关注
原创 关于torch.gather(input, dim, index)
torch.gather()函数可以理解为根据索引和维度来求张量中对应的数,最后得到的是一个shape和index相同的张量即“以A = B.gather(dim=0, index=torch.tensor([[2, 1, 2]]))为例,(index维度可以是任意的维度,不要受限于B),即A的维度为(1,3);其次dim=0代表按列索引,那么index第一个元素“2”的含义为在B中其所在列(即第0列)的第2个元素。同理,index第二个元素“1”的含义为在B中其所在列(即第1列)的第1个元素;
2022-10-30 17:56:37 311 1
原创 关于锁存器的后仿真
首先是关于锁存器,如果一段组合电路,if-else语句中如果缺少else分支,很容易就会生成锁存器。或者是即便有else分支,但是else分支的赋值仍然等于它本身,这也会导致锁存器的生成。for examplemodule lat(wr_n, data_in, data_out, rst_n ); input wr_n; input [3:0]data_in; input rst_n; output [3:0]data_out; reg
2022-04-19 10:56:26 1982
原创 值变转储文件
值变转储文件(VCD)是一个ASCII文件,它包含仿真时间,范围与信号的定义以及仿真运行过程中信号值的变化等信息。设计中的所有信号或者选定的信号集合在仿真过程中都可以被写入VCD文件。后处理工具可以把VCD文件作为输入并把层次信息、信号值和信号波形显示出来。现在有许多商业后处理工具以及集成到仿真器中的工具可供使用。对于大规模设计的仿真,设计者可以把选定的信号转储到VCD文件中,并使用后处理工具去调试,分析和验证仿真输出结果。Verilog提供了系统任务来选择要转储的模块实例或者模块实例信号($d
2022-03-28 16:33:06 728
原创 Verilog 选通显示
以下内容来自夏宇闻的书选通显示(Strobing)由关键字为$strobe的系统任务完成。这个任务与$display任务出一点小差异外,其他非常相似。如果许多其他语句与$display任务在同一个时间单位执行,那么这些语句与$display任务的执行顺序是不正确的。如果使用$strobe,该语句总是在同时刻的其他赋值语句执行完成后才执行。因此,$strobe提供了一种同步机制,它可以确保所有在同一时钟沿赋值的其他语句在执行完成后才显示数据example: 选通显示// 选通显示always
2022-03-28 15:50:52 235
原创 Verilog文件输出
1. 打开文件文件可以用系统任务$fopen打开用法:$fopen("<文件名>");用法:<文件句柄> = $fopen("<文件名>");任务:$fopen 返回一个被称为多通道描述符的32位值,多通道描述符中只有一位被设置成1.标准输出有一个多通道描述符,其最低位(第0位)被设置层1.标准输出也称为通道0。标准输出一直是开放的。以后对$fopen的每一次调用打开一个新的通道,并且返回一个设置了第1位、第2位等,知道32位描述符的第30位。第3
2022-03-28 15:29:15 4188 1
原创 Verilog中一些特殊的函数
最近在看夏宇闻的书,函数声明部分,其中提到一些之前没有用到过的函数,在此作为记录自动(递归)函数Verilog中的函数是不能够进行递归调用的。设计模块中若某函数在两个不同的地方被同时开发调用,由于这两个调用同时对同一块地址空间进行操作,那么计算结果将是不确定的。若在函数声明中使用了关键字automatic, 那么该函数将成为自动的或可递归的,即仿真器为每一次函数调用动态地分配新的地址空间,每一个函数调用对各自的地址空间进行操作。因此,自动函数中声明的局部变量不能通过层次名进行访问。而自动函数本身
2022-03-27 21:16:30 1931
原创 Verilog 电平敏感时序控制
以计数器为例1 always @(电平敏感列表)这是我们最常用的,也是之前一直在用的。always @(en, count)begin if (en) #20 count = count + 1;end2 always wait之前没有用过,最近在夏宇闻的书上看到的。在这种形式中,后面的语句块需要等待某个条件为真才能执行,Verilog语言用关键字wait来表示等待电平敏感的条件为真always wait (en) #20 count = count
2022-03-27 13:50:08 1340
原创 Verilog中综合出锁存器
Verilog代码综合后的电路中生成锁存器的原因,一般是因为:if语句中没有写else项,case语句中没有写default项例1:module latch_example(al, d, q); input al, d; output q; wire al, d; reg q; always @(al or d)begin if(al) q = d; endendmodule综合后的RTL结构具体的电路结构其中LD..
2022-03-15 23:10:14 2898
原创 Verilog 中的顺序块和并行快
Verilog中的块语句有两种,一种是顺序块,以begin end引导,另一种是并行快,以fork join引导。1. 顺序块顺序块已经用的很多了,通常在initial引导的结构中使用,块内的语句顺序执行,每条语句的延迟时间是相对于前一天语句的仿真时间而言的。例1:begin a_reg = b_reg; c_reg = a_reg; // c_reg 的值即为b_reg的值end首先a_reg 的值更新为b_reg 的值,然后c_reg的值更新为a_reg的值,因为这两
2022-03-15 22:17:46 1497
原创 Verilog中阻塞赋值=和非阻塞赋值<=理解一
本文主要参考夏宇闻的Verilog数字系统设计1. 非阻塞赋值方式(b<=a)(1)在语句块中,上面语句所赋的变量值不能立即就为下面的语句所用;(2)块结束后才能完成这次赋值操作,而所赋的变量是上一次赋值所得到的‘(3)在编写可综合的时序逻辑模块时,这是最常用的赋值方式。example用非阻塞赋值法确定reg型信号b和calways @ (posedge clk)begin b_reg <= a_reg; c_reg <= b_reg;end该a
2022-03-11 20:31:24 1804
原创 Verilog 中的Procedural continuous assignments
Verilog中的赋值方式:assign 引导的continuous 赋值用于nets类型的数据,比如wire,左边的值随着右边的值连续变化,可理解为线网, 比如wire carry_out, sum_out;wire carry_in, a_in, b_in;assign {carry_out, sum_out} = a_in + b_in + carry_in;procedural 赋值用于variable类型的数据比如reg, integer, real, time 和
2022-02-23 11:31:35 1845
原创 算术移位和逻辑移位
逻辑移位缺位用0补位算术移位(注意!)左移:缺位用0补位有符号和无符号的算术左移虽然方式是一样的,但他们表示的移位后数的范围是不一样的,有符号数左移(算术左移)位后的范围是-128——127【指8位】。而无符号数(算术左移)左移的范围是0——255【指8位】右移:要考虑符号位,对于有符号数,空位补1 对于无符号数,空位补0...
2022-02-21 21:38:31 566
原创 学习git 和gitte的使用
主要参考gitte教程git常用命令一 将本地代码同步到gitte1 添加到本地仓库,(暂存区)git add hello_world.c2 备注一下git commit -m "上传第一个代码,hello world"3 push到gittegit push -u originmaster...
2021-12-05 15:25:45 2053
原创 C语言学习记录
使用VS Code学习C语言安装C编译器,配置环境变量。(已有)新建文件夹name, 在里面编写name.c, 写好以后编译编译命令gcc -o name.exe name.c编译通过,运行name.exe.\name.exe运行通过
2021-12-03 10:18:30 183
原创 vpi_test1
VPI:Verilog与C相互调用参考 :深入浅出FPGA-18-VPI1 安装C编译器windows环境下安装Mingw。编译器版本要和Questasim或modelsim版本相对应,(32位还是64位),并将bin目录添加至环境变量path2 编写verilog和c程序新建文件夹,编写相应的hello.v 和 hello.chello.vmodule hello; initial $hello;endmodulehello.c/** vpi ...
2021-12-02 17:09:53 219
原创 三分频电路
思路00,01,10,在00,01的时候为低,10的时候为高,需要用到寄存器,加法器,比较器其实计数器就是由这三部分组成方案1RTLcodemodule fenpin3(clk,rst,clk_3); input wire clk,rst; output wire clk_3; reg [1:0]count; always@(posedge clk, posedge r...
2021-09-13 10:32:46 9678 2
原创 python * 和 **的含义
* 传递任意数量的实参# *表示传递任意数量实参def make_pizza(*toppings): """打印顾客点的所有配料""" print(toppings)make_pizza('pepperoni')make_pizza('mushrooms', 'green peppers', 'extra cheese')结果('pepperoni',)('mushrooms', 'green peppers', 'extra cheese')** 表示传递任意
2021-09-10 17:21:08 314
原创 pytorch中欧式距离
欧式距离公式 不必多说衡量两个向量之间的距离code PN论文中import torchdef euclidean_dist(x, y): # x: N x D # y: M x D n = x.size(0) m = y.size(0) d = x.size(1) assert d == y.size(1) x = x.unsqueeze(1).expand(n, m, d) y = y.unsqueeze(0).expa
2021-09-09 20:30:51 1931
原创 os.path相关
os.listdirimport osdirct = 'F:\python_work\deep_learning'for i in os.listdir(dirct): print(i)结果如下,输出的是该目录的内容.idea5_1.pychapter3chapter5chapter6chapter7chapter8testtest1.ipynbos.path.joinfor i in os.listdir(dirct): fulldirct =
2021-09-09 16:57:02 41
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人