sky13笔记

1.generate用法
generate是物理上的展开,在compile时完成展开。
e.g.把array里面的每一项放入scale:

wire [7:0] array [0:7];
wire [8*8-1 :0]scale;
generate
genvar gen_x;
for(gen_x =0; gen_x <8; gen_x =gen_x +1)begin:gen_scaleassign scale[gen_x*8 +:8] = array[gen_x];//gen_x=0,从0往上8个bit
end//有*但是不用乘法器,compile时展开8遍
endgenerate//把array的8个8bit数放入[63:0]scale

2.例子:做2个16x16矩阵的减法。(对应位相减)

wire clk, rstn;
reg [7:0] a [15:0][15:0];
reg [7:0] b [15:0][15:0];
reg [8:0] sub [15:0][15:0];//减要考虑到结果为负,加1bit作为符号位。物理上会放置256个8bit减法器generate
genvar gen_x,gen_y;
for(gen_y =0; gen_y <16; gen_y =gen_y +1)begin :gen_sub_y//sim可以不取名,compile要取for(gen_x =0; gen_x <16; gen_x =gen_x +1)begin :gen_sub_xalways @(posedge clk or negative rstn)beginif(!rstn)sub[gen_y][gen_x] <= 'd0;elsesub[gen_y][gen_x] <= {1'b0, a[gen_y][gen_x]} - {1'b0,b[gen_y][gen_x]};endend
end
endgenerate

3.parameter:让IP方便配置不通应用

module myadd(a,b,sum);
parameter DWIDTH = 8;
input wire [DWIDTH-1 :0]a ,b;
output wire [DWIDTH :0] sum;
assign sum = {1'b0,a} + {1'b0,b};
endmodulemodule top();
wire [8:0] a9,b9;
wire [9:0] sum10;
wire [12:0] a13,b13;
wire [13:0] sum14;myadd #(.DWIDTH(9))u_add9b(
.a(a9),
.b(b9),
.sum(sum10));
myadd #(.DWIDTH(13))u_add13b(
.a(a13),
.b(b13),
.sum(sum14));
endmodule

4.参数化SP-SRAM模型
在这里插入图片描述
FPGA工具自动推断这是个ram,但是asic就不行,它必须要用memory compile生成,因为不知道工艺库(28nm or 40nm, tsmc台积电 or smic中芯国际)
5.为什么要定义阻塞赋值,非阻塞赋值?
硬件行为本身是并行的,而CPU是串行行为,为了用串行行为去仿真并行行为,规定了阻塞/非阻塞赋值。
可综合Verilog建议:
定义成reg的组合逻辑,用=赋值;
定义成reg的时序逻辑,用<=赋值。
详细参考
Pattern输出给DUT的信号最好不要跟clk对齐,在tb顶层故意加一个#0.1。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/643448.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React-editor-js not showing up in a function component

React-editor-js not showing up in a function component react-editor-js 在react 函数组件中显示不出来 真的&#xff0c;我马上就想放弃它了。但是看它周下载量还挺多&#xff0c;我不信别人没遇到过。于是我继续在网络上挖呀挖。只是我一开始的方向错了。我一直以为我的写…

后端请求响应和分层解耦web开发的三层架构

请求响应案例 步骤 步骤1 配置环境 引入依赖 我们需要引入解析dom4j的工具类 再引入一个实体类 dom4j技术 dom4j 是一个用于处理 XML 文档的 Java 库&#xff0c;具有以下主要作用&#xff1a; 解析 XML 文档&#xff1a;dom4j 可以帮助你解析 XML 文档&#xff0c;将 XML …

3节点ubuntu24.04服务器docker-compose方式部署高可用elk+kafka日志系统并接入nginx日志

一&#xff1a;系统版本: 二&#xff1a;部署环境&#xff1a; 节点名称 IP 部署组件及版本 配置文件路径 机器CPU 机器内存 机器存储 Log-001 10.10.100.1 zookeeper:3.4.13 kafka:2.8.1 elasticsearch:7.7.0 logstash:7.7.0 kibana:7.7.0 zookeeper:/data/zookeep…

【工具】录屏软件Captura安装使用及ffmpeg下载配置

开启技术视频创作&#xff0c;录屏软件林林总总&#xff0c;适合的、习惯的最好。 录屏软件Captura的使用及ffmpeg下载配置 1.Captura下载、安装2.FFmpeg下载、配置3.Captura屏幕录制试用、录制视频效果 1.Captura下载、安装 Captura主要是一个免费开源的录屏软件&#xff0c…

C语言 字符类型

下面 我们来说字符类型 我们来看这个 保险单 金额 和 总额 都可以用数字类型 而性别则需要字符型 字符数据的存储 – ASCI码 字符类型 char 就是专为存储字符(如字母&#xff0c;标点和数字)而设计的类型。 使用单引号包含单个字符或转义字符去表示一个 char 类型的常量。 …

CDN、边缘计算与云计算:构建现代网络的核心技术

在数字化时代&#xff0c;数据的快速传输和处理是保持竞争力的关键。内容分发网络&#xff08;CDN&#xff09;、边缘计算和云计算共同构成了现代互联网基础架构的核心&#xff0c;使内容快速、安全地到达用户手中。本文将探讨这三种技术的功能、相互关系以及未来的发展趋势。 …

视频滚动字幕一键批量轻松添加,解锁高效字幕编辑,提升视频质量与观众体验

视频已成为我们获取信息、娱乐休闲的重要渠道。一部成功的视频作品&#xff0c;除了画面精美、音质清晰外&#xff0c;字幕的添加也是至关重要的一环。字幕不仅能增强视频的观感&#xff0c;还能提升信息的传达效率&#xff0c;让观众在享受视觉盛宴的同时&#xff0c;更加深入…

OpenHarmony南向开发案例:【 智能家居中控】

应用场景简介 智能家居。 今天打造的这一款全新智能家庭控制系统&#xff0c;凸显应用在智能控制和用户体验的特点&#xff0c;开创国内智能家居系统体验新局面。新的系统主要应用在鸿蒙生态。 工程版本 系统版本/API版本&#xff1a;OpenHarmony SDK API 8IDE版本&#xf…

探索ChatGPT在提高人脸识别与软性生物识准确性的表现与可解释性

概述 从GPT-1到GPT-3&#xff0c;OpenAI的模型不断进步&#xff0c;推动了自然语言处理技术的发展。这些模型在处理语言任务方面展现出了强大的能力&#xff0c;包括文本生成、翻译、问答等。 然而&#xff0c;当涉及到面部识别和生物特征估计等任务时&#xff0c;这些基于文…

数据可视化———Tableau

基本认识&#xff1a; 维度&#xff1a;定性—字符串文本&#xff0c;日期和日期时间等等 度量&#xff1a;定量—连续值&#xff0c;一般属于数值 数据类型&#xff1a; 数值 日期/日期时间 字符串 布尔值 地理值 运算符 算数运算符&#xff1a;加减乘除,%取余&#xff0c;…

Bert基础(十三)--Bert变体之知识蒸馏训练

B站视频 1、 训练学生BERT模型&#xff08;TinyBERT模型&#xff09; 在TinyBERT模型中&#xff0c;我们使用两阶段学习框架。 通用蒸馏特定任务蒸馏 这种两阶段学习框架能够蒸馏预训练阶段和微调阶段的知识。下面&#xff0c;让我们看看每个阶段的详细情况。 1.1 通用蒸馏…

rust 学习笔记(13-19)

13 迭代器与闭包 Rust 的设计灵感来源于很多现存的语言和技术。其中一个显著的影响就是 函数式编程&#xff08;functional programming&#xff09;。函数式编程风格通常包含将函数作为参数值或其他函数的返回值、将函数赋值给变量以供之后执行等等。 闭包&#xff08;Closu…