位宽

[转帖]有问有答:寻址能力与CPU的位宽有关系吗?

江枫思渺然 提交于 2020-03-23 07:31:17
有问有答:寻址能力与CPU的位宽有关系吗? https://www.expreview.com/60286.html thesea 发布于 2019-6-6 17:16 本文约 900 字,需 2 分钟阅读 (切换至 标准版 ) 答案是没有关系。这个问题以讹传讹了很多人,传了很久,确实有必要说说。 CPU的寻址能力与它的地址总线位宽有关 ,而我们通常说的CPU位宽指的是数据总线位宽,它和地址总线位宽半毛钱关系也没有,自然也与寻址能力无关。 简单的说,CPU位宽指的是一个时钟周期内CPU能处理的二进制位数,如8086 CPU是16位的,可以一次处理2个字节(16个bit),80386 CPU是32位,能一次处理4个字节,目前的CPU基本上64位的了,一次能处理8个字节。 我们的Windows操作系统也分为32位和64位,主要是针对上面CPU的位宽做了些优化,比如32位的CPU就不能用64位的Windows(因为CPU一次只能处理32bit,而操作系统给你的指令是要处理64bit),但64位的CPU就可以运行32位的Windows,也能运行64位Windows。 那CPU的地址总线位宽到底是个什么鬼? Intel的解释是Physical Address Extensions (PAE) is a feature that allows 32-bit processors to

乘法器之三(半并行乘法器)

天大地大妈咪最大 提交于 2020-03-12 16:36:32
2) 半并行乘法器 ( Semi-parallel multiplication ) 半并行乘法器将输入乘数的部份位乘上被乘数或者系数,然后将每次得到的部份积移位累加后得到乘法结果。 举个例子,一个16位输入总线可以被分成四组四位,四组数据被依次送到RAM块的地址端口,每个时钟送入 一组,低四位先送。在每个时钟周期,RAM块依次输出每一组数据和系数相乘的结果。图10显示了是如何分 解一个16位输入、14位系数来实现半并行乘法操作的。 图11显示了用一个M512RAM LUT实现图10所示的半并行乘法器 。实现方法是在每个时钟周期加载四位输 入到RAM块,根据权位通过移位累加每个时钟周里RAM块输出的部份积, 在六个时钟周期 (四个时钟用于 加载输入值到RAM块,两个时钟用于流水延迟)后完成一个乘法操作。每次部份积移位相加后输出会增加4 位,在第四次部份积累加完成后,乘法器产生一个30位的输出。 图11显示的是用一个M512实现16位输入被分成4组4位的例子。在本例中,对于同一个存储器块的使用, 输入总线的位宽将决定乘法器输出的位宽以及延迟。增大分组的位宽(比如在本例实现一个大于4位位宽的分组) 可以减小乘法器的延时。但这样也许会需要更多的M512块或者使用大的RAM块M4K。 也可以用QuartusII 的Megafunction altmemmult来实现半并行定系数乘法器

浅析Xilinx家DDR控制器MIG的使用

微笑、不失礼 提交于 2020-02-20 08:04:52
FPGA的片上存储资源bram简单好用,时序清晰,要不是总容量往往就几十Mb谁愿意用DDR呀······ 害,言归正传,因为设计需要存储1477x1800x3 双精度浮点复数这样的大号矩阵,所以只能放到DDR上去进行读写。之前在网上找了好多资料,但发现都没有一个很完整的教程教你怎么使用DDR控制器IP核MIG(Memory Interface Generator),所以写了这篇文章主要希望能帮初学者快速上手MIG的使用以实现DDR读写。 介绍MIG之前,我觉得有必要先对DDR做一个介绍,DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory,实际上还分为DDR SDRAM,DDR2 SDRAM,DDR3 SDRAM,DDR4 SDRAM,主要是数据预取prefetch和工作频率的不同,感兴趣的大家可以自己查),搭眼一看,这玩意本质上不就是数字集成电路里学的DRAM嘛(电容存储,会漏电,时不时需要刷新blablabla······),而double data rate说的是他在clock的上升沿和下降沿都会进行数据读写,设想如果用户逻辑侧的时钟频率和DDR的工作频率之比为1:4的话,用户侧的一个clk, 那么DDR实际上进行了4*2(上下沿)=8次读写操作。 DDR3的内部是如上图的存储阵列组成

Verilog 常规数据定义

十年热恋 提交于 2020-02-17 23:20:26
Verilog HDL中总共有19种数据类型 4 个最基本的数据类型:integer型、parameter型、reg型和wire型。 其他的类型有 :large型、medium型、scalared型、 time型、small型、tri型、trio型、tril型、 triand型、trior型、trireg型、vectored型、wand型和wor 型。 一、数字 整数 有二、八、十、十六进制 <位宽>’<进制><数字>, 这是一种全面的描述方式 缺省的位宽由具体的机器系统决定,至少是32位 缺省的进制为十进制 x表示不定值,z代表高阻值,z还可以用?代替 4'b10x0 //位宽为4的二进制数从低位数起第二位为不定值 4'b101z //位宽为4的二进制数从低位数起第一位为高阻值 12'dz //位宽为12的十进制数,其值为高阻值 12'd? //同上 8'h4x //位宽为8的十六进制数,其低4位值为不定值 要表示负数的话只需在位宽表达式前加一个减号 可以用在数字之间提高数字的可读性如16'b1010_1011_1111_1010 参数(parameter)型 即用parameter来定义一个标识符代表一个常量,称为符号常量,类似于const和define pi一样。 网络数据类型表示结构实体(例如门)之间的物理连接,不能储存值,而且必须收到驱动器的驱动

SystemVerilog - DataTypes

懵懂的女人 提交于 2020-02-17 01:59:58
本章介绍SystemVerilog引入的新数据类型。绝大部分是可综合的,并会使代码更简洁易懂。 整数和实数类型(Integer and Real Types) SystemVerilog引入了几种新的数据类型。大部分和C编程类似。主要考虑的是,如果两种语言有相同的数据类型,那么C语言建模的算法,可以更简便地转化到SystemVerilog。 Verilog的变量类型是4态的:每一位代表0,1,X或者Z。SystemVerilog引入2态类型,每一位代表0或者1。在不需要X和Z态时,你可以使用这些新类型,比如在Test Bench和For循环中用到的变量。使用2态变量可以提高仿真器效率。使用恰当,不会影响综合结果。 2态整数类型 类型 描述 举例 bit 用户定位宽度 bit [3:0] a_nibble; byte 8位宽,有符号 byte a,b; shortint 16位宽,有符号 shortint c,d; int 32位宽,有符号 int i,j; longint 64位宽,有符号 longint lword; 4态整数类型 类型 描述 举例 reg 用户定位宽度 reg [7:0] a_byte; logic 和reg相同 logic [7:0] a_byte; integer 32位宽,有符号 integer i,j,k; logic 比 reg 更推荐

[文档].艾米电子 - 使用有符号数,Verilog

核能气质少年 提交于 2020-02-16 04:17:47
对读者的假设 已经掌握: 可编程逻辑基础 Verilog HDL基础 使用Verilog设计的Quartus II入门指南 使用Verilog设计的ModelSIm入门指南 内容 1 概述 在数字电路中,出于应用的需要,我们可以使用无符号数,即包括0及整数的集合;也可以使用有符号数,即包括0和正负数的集合。在更加复杂的系统中,也许这两种类型的数,我们都会用到。 有符号数通常以2的补码形式来表示。图1列出了4位二进制表示法所对应正负数。进一步观察,我们发现两种类型数的加减法是一样的,做加法和减法就是在数轮上按正时钟转转或按反时钟转。比方说,1001+0100,意味着从1001按照顺时钟方向移动4个位置,其结果为1101。在无符号数类型中,它代表(+9)+(+4)=+13;而在有符号数类型中,它则代表(-7)+(+4)=-3。从数轮上看,若是加法所得的结果溢出了,那么也就是穿越了数轮的临界点。注意这个临界点对于无符号数和有符号数来说,是不一样的:无符号数,是介于1111和0000之间;有符号数,则是介于0111和1000之间。 物理加减法的行为正好和数轮的移动类似。只要所有的运算子和结果具有相同的位宽,那么有符号数或无符号数的形式就可用于相同的电路。比方说,设a、b和sum都是8位信号,表达式 sum = a+ b; 无论这些信号被转译成有符号数或无符号数

Verilog之基础语法

拜拜、爱过 提交于 2020-02-05 01:06:23
逻辑值 逻辑0:表示低电平,也就对应电路GND; 逻辑1:表示高电平,也就对应电路的VCC; 逻辑X:表示未知,有可能是高电平,也有可能是低电平; 逻辑Z:表示高阻态,外部没有激励信号,是一个悬空状态。 如图所示: 数字进制格式 Verilog数字进制格式包括二进制(b)、八进制(o)、十进制(d)和十六进制(h)。一般常用的为二进制、十进制和十六进制。 二进制表示:4’b0101表示4位二进制数字0101 十进制表示:4’d2表示4位十进制数字2(二进制0010) 十六进制表示:4’ha表示4位十六进制数字a(二进制1010) 最前面的数值4代表位宽(同二进制的位宽单位对应),若未指定位宽,默认32位位宽,若没有指定进制,默认十进制。 16;b1001_1010_1010_1001 = 16’h9AA9 (下划线为了增强可读性,对程序数值表示没有影响) 标识符 标识符(identifier)用于定义模块名、端口名、信号名等。 标识符可以是任意一组 字母 、 数字 、 $ 符号和 _ (下划线)符号的组合,但标识符的第一个字符必须是字母或者下划线,标识符区分大小写。 不建议大小写混合使用,普通内部信号建议全部小写,信号命名最好体现信号的含义、简洁、清晰、易懂。 数据类型 在Verilog语言中,主要有三大数据类型: 寄存器 数据类型、 线网 数据类型和 参数 数据类型

Quartus II LPM使用指南-FIFO篇

梦想与她 提交于 2020-01-28 10:20:17
Quartus II LPM使用指南 FIFO篇 BY WG http://www.cnblogs.com/wg2011/ 目录 说明 - 2 - 摘要 - 3 - 第一章 FIFO配置全攻略 - 4 - 1.1如何配置自己需要的FIFO - 4 - 1.2输入输出端口 - 5 - 1.3时序要求 - 8 - 1.4输出状态标记和潜伏期 - 8 - 1.5避免亚稳态 - 9 - 1.6同步复位及异步复位的影响 - 9 - 1.7不同的输入输出位宽 - 10 - 1.8约束设置 - 10 - 第二章 设计实例 - 11 - 2.1设计实例概要 - 11 - 2.2系统仿真分析 - 11 - 2.2.1写操作 - 11 - 2.2.2读操作 - 12 - 2.2.3当DCFIFO被写满时 - 13 - 2.2.4完成ROM至DCFIFO的数据传递 - 13 - 2.2.5完成DCFIFO至RAM的数据传递 - 14 - 附录 FIFO配置界面: - 15 - 1 - 15 - 2 - 16 - 3 - 17 - 4 - 18 - 5 - 19 - 6 - 19 - 参考文献 - 21 - 说明 本文档根据 ALTERA 《SCFIFO and DCFIFO Megafunctions》一问整理而来。 笔者使用Quartus II 的版本及PC机操作系统版本为11.1 sp2 WIN7

DDR基本知识

走远了吗. 提交于 2020-01-14 09:08:35
一、对DDR中Bank(逻辑Bank)、Rank(物理Bank)的整理 首先,在DDR的内部,数据是以阵列的形式存储的,通过指定的行和列就可以对目标数据进行读/写。  (1)Bank   DDR中的逻辑Bank就是指DDR中指存储阵列的个数 ,DDR中一般有多个存储阵列。由于制造工艺的原因,存储阵列的规模一般不会做的太大, 并且数据位宽一般是4/8/16。一个时钟周期内只允许DDR对一个逻辑BANK进行操作,而不是对内存芯片内所有逻辑BANK同时操作,因为芯片的位宽就是逻辑BANK的位宽。逻辑BANK的地址线是通用的,只要再有一个逻辑BANK编号加以区别就可以了。  (1)Rank   物理Bank(Rank) 是多个芯片组成的内存条上出现的概念 ,由于处理器的数据位宽一般是32/64bits,而单个芯片的位宽等于其内部单个存储阵列的位宽4/8/16,所以需要多个芯片组合起来才能提供CPU需要的数据。 一个Rank里的芯片组合起来后刚好等于数据总线位宽 ,当内存条中所有芯片提供的位宽超过了数据总线的位宽,发生富余时才会出现多个Rank。CPU一个周期只能访问一个Rank。 二、 DDR型号的识别 以镁光1Gb ddr2为例:1Gb ddr2有三种型号: MT47H256M4 – 32 Meg x 4 x 8 banks MT47H128M8 – 16 Meg x 8 x 8

Xilinx之RAM使用指南

旧街凉风 提交于 2020-01-12 05:36:39
一、 RAM 分类 XILINX 的 RAM 可分为三种,分别是:单口 RAM,简化双口 RAM 和真双口 RAM。如下 图所示: 图1 单口 RAM 图2 简化双口 RAM A 口写入数据,B 口读数据 图3 真双口 RAM A,B 任意一个口都可以读写数据,可从 A 写入,B 读数据 二、选择数据位宽和深度 Block RAM 的数据位宽为 1-1152bit,深度取决于所选择 FPGA 器件中 block 的数量。超出地址范围之外的写操作,写进去的数据不会与存储器件中的数据冲突。 读超出地址范围之 外数据将会返回无效数据。注意, 当对超出范围的地址进行操作的时候, 不能置位 set 或 reset信号,因为这仍然会读出无效数据。 三、操作模式 每个端口的操作模式决定了此端口的读和写之间关系。端口 A 和 B 可以独立配置为以 下三种模式中任一模式:写优先模式,读优先模式,不改变模式。这些模式详解见下面。当 A 和 B 端口地址有冲突时,操作模式就会影响 A 和 B 口之间关系。 1.写优先模式(write first mode): 在写优先模式中,输入数据被自动写入存储器件中,并且出现在数据输出端口。时序见下图。这种传输模式增强了在同一端口写操作时使用数据输出总线的灵活性。(即输入数据的同时自动写进存储器和驱动数据到数据输出端) 图4 写优先操作模式 2.读优先模式(read