vhdl 二进制转整数
格雷码、二进制码转换

南理工紫金学院
EDA设计实验
由于case属于顺序语句, 在VHDL中顺序语句只能存 在与进程中。
南理工紫金学院
VHDL 常用基本语句
EDA设计实验
进程语句
进程主要用于描述顺序语句,其格式如下:
标记:process (敏感信号表 ) --变量声明语句; begin --顺序语句 end process; 敏感信号(包括端口信号)指那些值发生改变后能引起 进程语句执行的信号。当敏感信号发生改变时,进程启 动,begin和end之间的语句从上到下顺序执行一次,然 后返回进程语句开始,等待下一次敏感信号的变化。因 此进程语句有两种状态:等待状态和执行状态。 南理工紫金学院
Library IEEE; use IEEE.std_logic_1164.all;
entity and_gate is port(a,b: IN std_logic; y: out std_logic); end and_gate; architecture rhl of and_gate is begin y<=a and b; end rhl;
EDA设计实验
第二节 格雷码、二进制码转换
南理工紫金学院
EDA设计实验
实验内容
1)学习VHDL代码修改。 2)利用case语句描述4位格雷码/二进制码 转换电路,要求将输入输出的数据用数码 管显示。 。 3)利用generate并行语句描述n位格雷码/ 二进制码转换电路(n=4)。 4) 利用实验箱验证所设计电路的正确性, 要求将输入输出的数据用七段数码管显示。
能进行逻辑运算的数据类型:bit、bit_vector、 boolean std_logic、std_logic_vector
格雷码、二进制转换及译码电路

EDA技术与应用实验报告实验名称:格雷码、二进制转换及译码电路姓名:陈丹学号:2班级:电信(2)班时间:南京理工大学紫金学院电光系一、实验目的1)学习用VHDL代码描述组合逻辑电路的方法。
2) 掌握when….else….,generate和case并行语句的使用。
二、实验原理1)学习VHDL的when….else….,generate和case并行语句。
2)利用when….else….并行语句描述4位二进制码/格雷码转换电路。
3)利用generate并行语句描述n位格雷码/二进制码转换电路。
4)利用case并行语句实现译码电路。
5)利用实验箱验证所设计的电路的正确性,要求将输入输出的数据用数码管显示。
三、实验内容1、二进制转换为格雷码4位二进制格雷码转换的真值表如图所示:建立工程,输入代码先建立工程,工程命名为“btog”,顶层文件名为“btog”。
选择“file→new”,在弹出的窗口中选择“VHDL File”建立“VHDL”文件。
在新建的VHDL文件中输入二进制格雷码转换的VHDL代码,将文件保存。
二进制转换为格雷码的代码:编译仿真对当前文件进行编译,编译通过以后建立仿真波形,保存为“”.为波形文件添加节点,将“end time”设置为100μs ,将输入输出编组,并为输入信号赋值,其中“start value”为“0000”,“count every”设置为5μs.其波形如下:仿真结果2、generate语句实现格雷码转换为二进制对于n位二进制转换为格雷码的码转换电路,转换表达式如下:Bn=GnBi=Gi⊕B(i+1)建立工程,输入代码先建立工程,工程命名为“gtob”,顶层文件名为“g_to_b2”。
选择“file→new”,在弹出的窗口中选择“VHDL File”建立“VHDL”文件。
在新建的VHDL文件中输入格雷码二进制转换的VHDL代码,将文件保存。
转换代码:编译仿真对当前文件进行编译,编译通过以后建立仿真波形,保存为“”.为波形文件添加节点,将“end time”设置为100μs ,将输入输出编组,并为输入信号赋值,其中“start value”为“0000”,“count every”设置为5μs.其波形如下:3、case语句实现译码电路代码描述:仿真波形:4、管脚配置利用实验箱的模式6来验证设计电路的正确性。
(三)VHDL语言的数据类型及运算操作符

【例3-1】 PROCESS( A, B, C, D) BEGIN D<=A; X<=B+D; D<=C; Y<=B+D; END PROCESS; 结果: 结果:X<=B+C; Y<=B+C; PROCESS( A, B, C) VARIABLE D:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN D:=A; X<=B+D; D:=C; Y<=B+D; END PROCESS; 结果: 结果:X<=B+A; Y<=B+C; 信号量的值将进程语句最后所代入的值作为最终代入值。 信号量的值将进程语句最后所代入的值作为最终代入值。而变量 的值一经赋值就变成新的值。 的值一经赋值就变成新的值。这就是变量赋值和信号代入在操作 变量赋值和信号代入在操作 上的区别。 上的区别。
5. 布尔量 布尔量(Boolean) 一个布尔量具有两种状态,“真”或者“假”。虽然 或者“ “ 布尔量也是二值枚举量 二值枚举量,但它和位不同,没有数值的含义 和位不同, 二值枚举量 和位不同 没有数值的含义, 也不能进行算术运算 不能进行算术运算。它能进行关系运算 能进行关系运算。例如,它可以 不能进行算术运算 能进行关系运算 在IF语句中被测试,测试结果产生一个布尔量TRUE或者 FALSE。 一个布尔量常用来表示信号的状态或者总线上的情况 表示信号的状态或者总线上的情况。 表示信号的状态或者总线上的情况 如果某个信号或者变量被定义为布尔量,那么在仿真中将 自动地对其赋值进行核查。这一类型的数据的初始值一般 初始值一般 总为FALSE。 总为
表3-1 VHDL语言 3 类客体含义和说明场合
3.1.1 常数(Constant) 常数 常数是一个固定的值 固定的值。所谓常数说明 常数说明,就是对某一常 固定的值 常数说明 对某一常 数名赋予一个固定的值。通常赋值在程序开始前 数名赋予一个固定的值 程序开始前进行, 程序开始前 该值的数据类型则在说明语句中指明。常数说明的一般 格式如下: CONSTANT 常数名: 数据类型:=表达式; 常数名 数据类型 表达式; 表达式 例如: CONSTANT VCC: REAL:=5.0; CONSTANT DALY: TIME:=100 ns; CONSTANT FBUS: BIT_VECTOR:="0101";
在二进制的整数转换

在二进制的整数转换中,如(100110101)B=1×28+0×27+0×26+1×25+1×24+0×23+1×22+0×21+1×20在整个转换过程中,2的幂从0~8;而如果是小数,如(1101.1011)B=1×23+1×22+0×21+1×20+1×2-1+0×2-2+1×2-3+1×2-4=8+4+0+1+1/2+0+1/23+1/24=13+0.5+0.125+0.0625=13.6875在小数点后面的数,2的幂从-1~-N,这就是它们之间的关系。
关于小数的十进制转换成二进制:把十进制小数转换成二进制小数所采用的规则是“乘以2取整数”。
方法是用2乘以十进制纯小数,将其结果的整数部分去掉;再用2乘余下的纯小数部分,再去掉其结果的整数部分;如此继续下去,直到余下的纯小数为0或满足所要求的精度为止。
最后将每次得到的整数部分(0或1)按先后顺序从左到右排列,即得到所对应的二进制小数。
0.6875*2=1.375(取1)(1.375-1)*2=0.75(取0)0.75*2=1.5(取1)(1.5-1)*2=1(取1)1-1=0(到这就结束了)因此,十进制小数0.6875转换成二进制小数为0.1011。
注意:有些十进制小数不一定能完全准确地转换成二进制小数。
在这种情况下,可以根据精度要求只转换到小数点后某一位为止。
先求整数部分625/2=312 (1)312/2=156 0156/2=78 078/2=39 039/2=19 (1)19/2=9 (1)9/2=4 (1)4/2=2 02/2=1 01/2=0 (1)除2取余,余数倒着书写,即(625)10=(1001110001)2三进制则除以三,八进制则除以八再看小数0.625*2=1.25.....取10.25*2=0.5.....取00.5*2=1.0....取1将整数部分从上往下取,即(0.625)10=(0.101)2整数小数拼起则得(1001110001.101)2各种进制以此类推提问人的追问 2009-09-10 15:46那如何把二进制的小数转化为十进制?回答人的补充 2009-09-10 15:48本来用WORD写了个公式整成图片,没想到上传后会压缩成200*200,变形得严重,没办法,只好用文字说明一下了。
格雷码和二进制的相互转换-vhdl程序

1.B2G_converter1)Screenshot of iSim simulation results:note: from the beginning point at 1,000ns, input(i5binary) changes every other 50nsa)i5binary input from 0 to 6b)i5binary input from 7 to 13c)i5binary input from 14 to 20d)i5binary input from 21 to 27e)i5binary input from 28 to 312)VHDL for Binary-to-Gray-Code converter:------------------------------------------------------------------------------------ Company:-- Engineer:---- Create Date: 13:02:37 09/15/2015-- Design Name:-- Module Name: b2g_converter - Behavioral-- Project Name:-- Target Devices:-- Tool versions:-- Description:---- Dependencies:---- Revision:-- Revision 0.01 - File Created-- Additional Comments:------------------------------------------------------------------------------------library IEEE;use IEEE.STD_LOGIC_1164.ALL;-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--use IEEE.NUMERIC_STD.ALL;-- Uncomment the following library declaration if instantiating-- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity b2g_converter isPort ( i5Binary : in STD_LOGIC_VECTOR (4 downto 0);o5GrayCode : out STD_LOGIC_VECTOR (4 downto 0));end b2g_converter;architecture Behavioral of b2g_converter issignal gbuffer: std_logic_vector (4 downto 0);begino5GrayCode<=gbuffer;gbuffer(4)<=i5Binary(4);label1:for i in 3 downto 0 generategbuffer(i)<= i5Binary(i+1) xor i5Binary(i);end generate;end Behavioral;2.G2B_converter1)Gray-code-to-Binary conversionFrom the combinational logic described for gray-code-to-binary conversion, we obtain:Thus, for a n-bit graycode number g, g=g(n-1)g(n-2)…g(2)g(1)g(0), the corresponding n-bit binary number b, b=b(n-1)b(n-2)…b(2)b(1)b(0) is computed using the following description:b(n-1)=g(n-1) for the MSB, andb(i)= g(i) b(i+1) for bits in position 0 to n-22)Screenshot of iSim simulation results:note: from the beginning point at 1,000ns, input(i5graycode) changes every other 50nsa)i5graycode input from 0 to 6b)i5graycode input from 7 to 13c)i5graycode input from 14 to 20d)i5graycode input from 21 to 27e)i5graycode input from 28 to 313)VHDL for Gray-Code-to-Binary converter:------------------------------------------------------------------------------------ Company:-- Engineer:---- Create Date: 15:20:03 09/15/2015-- Design Name:-- Module Name: g2b_converter - Behavioral-- Project Name:-- Target Devices:-- Tool versions:-- Description:---- Dependencies:---- Revision:-- Revision 0.01 - File Created-- Additional Comments:------------------------------------------------------------------------------------ library IEEE;use IEEE.STD_LOGIC_1164.ALL;-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--use IEEE.NUMERIC_STD.ALL;-- Uncomment the following library declaration if instantiating-- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity g2b_converter isPort ( i5GrayCode : in STD_LOGIC_VECTOR (4 downto 0);o5Binary : out STD_LOGIC_VECTOR (4 downto 0)); end g2b_converter;architecture Behavioral of g2b_converter issignal bbuffer: std_logic_vector (4 downto 0);begino5Binary <= bbuffer;bbuffer(4)<= i5GrayCode(4);label1:for i in 3 downto 0 generatebbuffer(i)<= bbuffer(i+1) xor i5GrayCode(i); end generate;end Behavioral;。
VHDL实验报告——4位二进制码转换成BCD码(免费哦~)

PORT(
D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
B:OUT STD_LOGIC_VECTOR(4 DOWNTO 0)
);
END;
ARCHITECTURE XIA OF ONE IS
BEGIN
PROCESS(D)
BEGIN
IF D<"1010" THEN
B<=D+"00000";
ELSE B<="00000"+D+"110";
END IF;
END PROCESS;
END;
实验仿真波形截图
管脚分配界面截图
上机实验报告
实验题目
班级
姓名
学号
指导教师
4位二进制码转换成BCD码
虾
实验目的与要求:
1、通过常见代码转换电路的设计,熟悉EDA设计流程。
2、熟悉文本输入及仿真步骤。
3、掌握VHDL设计实体的基本结构及文字规则。
4、掌握组合逻辑电路的静态测试方法。
5、熟悉可编程器件设计的全过程。
实验步骤与内容:(可加附页)
1、创建工程。
2、新建文件夹。
3、输入正确的源程序,保存,编译。
4、波形仿真,分配引脚,编译。
5、下载到试验箱,进行功能验证。
(原理图及仿真的波形界面在备注)
备注:
实验源程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
格雷码、二进制转换电路,vhdl南京理工大学紫金学院实验报告,eda

对于 n 位二进制码转换为格雷码的码转换电路,转换表达式如下:
g n an gi ai1 ai
2、GENERIC、GENERATE 语句 a、GENERIC GENERIC 被称为参数传递映射语句,它描述响应的元件类属参数间的衔接和传送方式。 参数传递语句用于设计从外部端口改变原件内部参数或结构规模的元件, 也可称其为类书元 件。该语句在改变电路结构或元件硬件升级方面显得尤为便捷。
1)学习用 VHDL 代码描述组合逻辑电路的方法。 2) 掌握 when…else…和 generate 并行语句的使用。
二、 实验原理
1、格雷码、二进制码转换理论分析 4 位格雷码二进制转换的真值表如图 1。
图 1 4 位格雷码二进制转换的真值表 由真值表得到的表达式如下:
B3 G 3 B 2 B3 G 2 B1 B 2 G1 B0 B1 G 0
将未配置的管脚设置为高阻态。 注意:总线“b”和总线“g”不需要配置管脚。 注意:配置好管脚后一定要记得编译。 4、下载 将文件下载到实验箱,对实验箱进行操作,将键 1~键 8 按钮设置为不同的电平,观察 D1~D8 发光二极管的情况。
四、 小结与体会
通过这次实验,我对理论课上老师所讲的 generate 并行语句有了更深一步的了解。 本次实验是我们的第二次实验,但是是第一次在 Quartus II 软件上编写代码。我掌握 when…else…和 generate 并行语句的使用, 并利用 generate 并行语句做了了 8 位二进制码 /格雷码转换电路,且利用实验箱验证了所设计电路的正确性。
注意: “Count every”值一定要比“End time”值小,且“Count every”值最好不要 设置太小 (如 10ns) , 避免在时序仿真是由于延时造成结果不正确。 “Count every” 值和 “End time”值共同决定了输入信号值的数目。 注意:每次仿真时最好从“Simulator Tool”中导入要仿真的文件,而不是直接点击工 具栏上的按钮,尤其是当工程中存在多个仿真文件时。 3、管脚配置 利用实验箱的模式 5 来验证设计电路的正确性。 用键 1~键 8 表示输入管脚 g0~g7,发光二极管 D1~D8 表示输出管脚 b0~b7。 选择“Assignment→Assignment Editor”弹出管脚配置图,在“Location”一栏中填 入相应器件的管脚。如下图。
基于vhdl语言的二进制转十进制并用数码管显示的设计

河南科技学院机电学院VHDL课程设计报告题目:八位数码管显示专业班级:电气工程及其自动化102姓名:周迎接学号:20100344214指导教师:付广春完成日期:2012年12月27 日目录1 引言 (2)2 总体设计方案 (2)2.1 输入引脚数目的计算 (3)2.2 二进制转为十进制部分程序设计 (3)2.3 数码管显示部分程序设计 (4)3 仿真显示 (5)3.1 显示3仿真图 (5)3.2显示96的仿真图 (5)4 心得体会 (6)参考文献 (6)附录1 (7)摘要随着当今社会电子技术的快速发展,单凭借硬件已不再能满足广大人民的需求,这时候软件就显示除了他们突出的优点。
与其他编程语言相比,VHDL语言以其超强的硬件描述能力,良好的可读性和可移植性,以及其良好的用户自定义性受到了广大用户的青睐。
VHDL语言在最近几年的发展及其迅猛,由此可以看出其用途已经变的越来越广泛。
一个VHDL程序由5个部分组成,包括实体(ENTITY)、结构体(architecture)、配置(coxnfiguration)、包(package)和库(library)。
实体和结构体两大部分组成程序设计的最基本单元。
图2.2表示的是一个VHDL 程序的基本组成。
配置是用来从库中选择所需要的单元来组成该系统设计的不同规格的不同版本,VHDL和Verilog HDL已成为IEEE的标准语言,使用IEEE提供的版本。
包是存放每个设计模块都能共享的设计类型、常数和子程序的集合体。
库是用来存放已编译的实体、结构体、包和配置。
在设计中可以使用ASIC芯片制造商提供的库,也可以使用由用户生成的IP库。
今天我所要设计的是基于VHDL语言的8位数码管显示电路,其要实现的功能是把输入的二进制数转换为对应的十进制数,并通过数码管显示出来。
其过程大致可以分为通过程序将输入的二进制数先转换为对应的十进制数,然后再把对应的十进制数与数码管的管脚对应起来,使其显示在数码管上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
vhdl 二进制转整数
在VHDL中,经常需要将二进制数据转换为整数。
二进制数在VHDL中
通常使用标准的位向量表示。
例如,一个 4-bit 二进制数可以表示为:```。
signal binary_num : std_logic_vector(3 downto 0) := "0101";。
```。
要将二进制数转换为整数,通常需要使用一个函数或过程来执行转换。
在VHDL中,可以使用以下代码来实现一个二进制到整数的转换函数:```vhdl。
function bin2int(bin : std_logic_vector) return integer is。
variable int_val : integer := 0;。
begin。
for i in bin'length-1 downto 0 loop。
int_val := int_val + (2某某i) 某
to_integer(unsigned(bin(i)));。
end loop;。
return int_val;。
end function;。
```。
在这个函数中,输入参数是一个 `std_logic_vector` 类型的二进制数,输出是一个整数类型变量。
函数内部首先定义了一个整数变量
`int_val`,它用于存储转换后的整数值。
然后使用 `for`循环遍历二进制数的每一位。
在循环中,使用了 `unsigned`函数将每一位转换为无符号整数类型。
然后使用 `to_integer`函数将该位转换为整数类型。
这个整数乘以当前位的权重,再加到 `int_val` 变量中。
最后,整个循环结束时,返回 `int_val` 变量的值,即为转换后的整数值。
假设在上面的代码片段中,`binary_num` 的值为 "0101",那么调用`bin2int` 函数,并将 `binary_num` 作为参数传递给函数,将会返回整数 5 作为输出。
总之,在VHDL中,将二进制数据转换为整数的过程需要使用函数或过程,并且需要注意权重的计算,以获取正确的转换结果。