xilinix ISE 11.5下编写的程序,除了用下面的方法使数据左移和右移,怎样用SLL和SRL指令实现同样的效果?(注释部分的SLL和SRL指令编译不能通过)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
PACKAGE GlobalDefinitions IS
CONSTANT cDataWidth : NATURAL :=8;
CONSTANT cAddrWidth : NATURAL :=5;
CONSTANT cOpCodewidth : NATURAL :=3;
SUBTYPE tDataBus IS STD_LOGIC_VECTOR(cDataWidth-1 DOWNTO 0);
SUBTYPE tAddr IS STD_LOGIC_VECTOR(cAddrWidth-1 DOWNTO 0);
SUBTYPE tOpCode IS STD_LOGIC_VECTOR(cOpCodewidth-1 DOWNTO 0);
CONSTANT cROL : tOpCode :="000";
CONSTANT cROR : tOpCode :="001";
CONSTANT cADD : tOpCode :="011";
CONSTANT cAND : tOpCode :="100";
CONSTANT cLDA : tOpCode :="101";
CONSTANT cSTA : tOpCode :="110";
CONSTANT cJMP : tOpCode :="111";
CONSTANT cSKZ : tOpCode :="010";
END GlobalDefinitions;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
--USE IEEE.numeric_std.ALL
--USE IEEE.STD_LOGIC_ARITH.ALL;
USE WORK.GlobalDefinitions.ALL;
ENTITY ALU IS
PORT(accin : IN tDataBus;
opcode : IN tOpCode;
din : IN tDataBus;
zero : OUT STD_LOGIC;
dout : OUT tDataBus);
END ALU;
ARCHITECTURE behavior OF ALU IS
BEGIN
WITH opcode SELECT
dout <= accin(cDataWidth-2 DOWNTO 0)&accin(cDataWidth-1)WHEN cROL,
accin(0)&accin(cDataWidth-1 DOWNTO 1) WHEN cROR,
--accin SLL 1 WHEN cROL,
--accin SRL 1 WHEN cROR,
accin+din WHEN cADD,
accin AND din WHEN cAND,
accin WHEN cSTA,
din WHEN cLDA,
accin WHEN OTHERS;
zero <= '1' WHEN (accin = 0) ELSE
'0';
END behavior;
怎样才能用signed和unsigned类型实现移位运算?
VHDL程序中逻辑左移和右移问题
accin定义的输入类型出现错误,sll的操作数必须是BIN或布尔型一维数组。
Verilog中算术左移右移与逻辑左移右移有什么区别?
算术左移右移代表保留符号位不动。逻辑左移右移代表不管符号位,整体做移动。二者的含义完全不同。例如:\/\/ The following operators will shift a bus right or left a number of bits.\/\/\/ ...Right shift and maintain sign bit Verilog:Verilog HDL是一种硬件描述语言(HDL:Hardware Description ...
请问VHDL中SLL的作用是什么?能否举个例子?
VHDL中的移位操作符有以下几种:sll 逻辑左移---数据左移,右端空出来的位置填充'0'srl 逻辑右移---数据右移,左端空出来的位置填充'0'sla 算术左移---数据左移,同时复制最右端的位,在数据左移操作后填充在右端空出的位置上 sra 算术右移---数据右移,同时复制最左端的位,...
vhdl怎么表示8位左右移位寄存器?
b_s <= b_s(6 downto 0) & d; --左移 --或者 b_s <= d & b_s(7 downto 1); --右移 end if;b <= b_s;end process;end rtl;上面才是正确的以为寄存器的VHDL写法。 我建议你把我的代码综合以后用软件看看RTL图,你就会理解VHDL描述的东西都可以转化为逻辑电路,不能用写C...
vhdl 怎么用算术左移
举个例子吧,,,n<="010111",对它进行左移,就是 n<=n(4 downto 0)&n(5),,结果就是101110
verilog 关于余除(取模) '%' 的问题
硬件语言不是C程序,你写的东西如果要下到FPGA上 是需要可以综合的。例如你的12%5,就是无法综合的,不要考验软件
移位寄存器?
右移是指数据由左边最低位输入,依次由右边的最高位输出;左移时,右边的第一位为最低位,最左边的则为最高位,数据由低位的右边输入,由高位的左边输出。 移位寄存器的输出也有串行和并行之分。串行输出就是在时钟脉冲作用下,寄存器最后一位输出端依次一位一位地输出寄存器的数据;并行输出则是寄存器的每个寄存单元均...
VHDL语言100例详解的图书目录
带控制端口的加法器第2例 无控制端口的加法器第3例 乘法器第4例 比较器第5例 二路选择器第6例 寄存器第7例 移位寄存器第8例 综合单元库第9例 七值逻辑与基本数据类型第10例 函数第11例 七值逻辑线或分辨函数第12例 转换函数第13例 左移函数第14例 七值逻辑程序包第15例 四输入...
什么是PROTEL
左箭头——光标左移1个电气栅格 shift+左箭头——光标左移10个电气栅格 右箭头——光标右移1个电气栅格 shift+右箭头——光标右移10个电气栅格 上箭头——光标上移1个电气栅格 shift+上箭头——光标上移10个电气栅格 下箭头——光标下移1个电气栅格 shift+下箭头——光标下移10个电气栅格 ctrl+1——以零件...
组成原理课程设计论文
培养解决实际问题的能力,提升创新思维和实践能力。三、课程设计内容 运算器设计:设计一个能够完成基本算术运算(加、减、乘、除)和逻辑运算的运算器。通过实践,了解运算器的内部结构和工作原理,掌握运算器的设计方法。存储器设计:设计一个存储器系统,包括主存和辅存。了解存储器的层次结构和访问方式,...