ZKX's LAB

如何用VHDL把两个8位数据变成一个8位数据? vhdl8位串并转换

2020-07-20知识16

用vhdl 实现2位十进制 转8位二进制 急求 2位十进制转二进制其实只要7位二进制就行了,我试了用八位的,编译器报错,这里的十进制和二进制转换是用函数CONV_STD_LOGIC_VECTOR(d,7)来实现的,其实你可以自己写。其中7表示位长,d表示要转换的数,这个函数在std_logic_arith包下。主要是在仿真的时候虽然可以运行成功(在没有引入clk时),但波形图看不到结果。因为“”具有延迟性,它要等整个进程结束,这个赋值才有变化,所以引入了一个clk,使其在仿真的时候看到变化。Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_arith.all;Entity convert2_8 isPort(clk:in std_logic;d:in integer range 99 downto 0;b:out std_logic_vector(6 downto 0));End convert2_8;Architecture behave of convert2_8 isBeginProcess(clk)Beginb(d,7);End process;End behave;重金求基于FPGA的8位串并转换vhdl语言的代码! library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity sc isport(clk,rxd:in std_logic;data:out std_logic_vector(7 downto 0));end sc;architecture rt8251 of sc issignal count:std_logic_vector(3 downto 0):=\"0000;signal do_latch:std_logic_vector(7 downto 0);signal d_fb:std_logic_vector(9 downto 0);signal rxdf:std_logic;signal rdfull:std_logic:='0';begindata;P1:process(clk)beginif(clk'event and clk='1')thenif((rxdf='1')and(count=\"1000\"))thendo_latch(7 downto 0)(7 downto 0);rdfull;end if;end if;end process p1;p2:process(clk)beginif(clk'event and clk='1')thenif(rxd='0')thenrxdf;elsif((rxdf='1')and(count=\"1000\"))thenrxdf;end if;end if;end process p2;p3:process(clk)variable scir:integer range 0 to 8;variable scis:std_logic_vector(3 downto 0);beginif(clk'event and clk='1')thenif(rxdf='1')thenscir:=scir+1;elsescir:=0;end if;end if;scis:=conv_std_logic_vector(scir,4);count;end process p3;p4:process(clk)begincase 。vhdl怎么表示8位左右移位寄存器? 首先2113,一个8位的移位寄存器不应该这么写。其次5261里面有好些错误,我先4102给你个正确的寄存器1653的思路:entity shift8 isport(d,clk:in std_logic;b:out std_logic_vector(7 downto 0)end entity shift8;architecture rtl of shift8 issignal b_s:std_logic_vector(7 downto 0);beginprocess(clk)beginif rising_edge(clk)thenb_s(6 downto 0)&d;左移或者 b_s(7 downto 1);右移end if;b;end process;end rtl;上面才是正确的以为寄存器的VHDL写法。我建议你把我的代码综合以后用软件看看RTL图,你就会理解VHDL描述的东西都可以转化为逻辑电路,不能用写C的思维来写VHDL。另外附加一句建议,SHARED VARIABLE,VARIABLE等最好不要在你的逻辑电路设计中使用,用也只在TESTBENCH中使用,因为在片上,VARIABLE什么都不是,是无法被综合成电路的一部分的。希望能帮到你用vhdl语言实现8位并转串电路和串转并电路,求大神指导!!急用!! library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity sc isport(clk,rxd:in std_logic;data:out std_logic_vector(7 downto 0));end sc;architecture rt8251 of sc issignal count:std_logic_vector(3 downto 0):=\"0000;signal do_latch:std_logic_vector(7 downto 0);signal d_fb:std_logic_vector(9 downto 0);signal rxdf:std_logic;signal rdfull:std_logic:='0';begindata;P1:process(clk)beginif(clk'event and clk='1')thenif((rxdf='1')and(count=\"1000\"))thendo_latch(7 downto 0)(7 downto 0);rdfull;end if;end if;end process p1;p2:process(clk)beginif(clk'event and clk='1')thenif(rxd='0')thenrxdf;elsif((rxdf='1')and(count=\"1000\"))thenrxdf;end if;end if;end process p2;p3:process(clk)variable scir:integer range 0 to 8;variable scis:std_logic_vector(3 downto 0);beginif(clk'event and clk='1')thenif(rxdf='1')thenscir:=scir+1;elsescir:=0;end if;end if;scis:=conv_std_logic_vector(scir,4);count;end process p3;p4:process(clk)begincase count iswhen。用vhdl语言把八位二进制转换为十进制,怎么输出的是十六进制啊 首先我们要明确我们要干什么。我猜你是想把二进制码转成十进制的BCD码。如果你是这么想的话,那你低估这个问题的复杂程度了。你的程序我仿真的时候有点问题(可能是我的ISE。用VHDL设计一个五位二进制如何转换为十进制的程序? 很简单,VHDL里面有一个二进制转十进制函数CONV_IETEGER(),在UNSIGNED这个程序包里,打开它用就是了,程序如下,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TURN2_10 ISPORT(A:IN STD_LOGIC_VECTOR(4 DOWNTO 0);B:OUT INTEGER RANGE 0 TO 32);END;ARCHITECTURE ART OF TURN2_10 ISBEGINB(A);END;如何用VHDL把两个8位数据变成一个8位数据? library IEEE;use IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_arith.all;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity aaa isPort(clk:in std_logic;636f7079e799bee5baa6e997aee7ad9431333264663665 a:in std_logic_vector(7 downto 0);b:in std_logic_vector(7 downto 0);c:out std_logic_vector(7 downto 0)end aaa;architecture Behavioral of aaa isbeginprocess(clk)variable e,f,g:integer range 0 to 100;beginif(clk' event and clk='1')thene:=conv_integer(a);将这两个输入的8位2进制数字变成十进制f:=conv_integer(b);g:=e*10+f;十位数字X10+个位数字就满足了你的要求c(g,8);再转换回2进制然后输出end if;end process;end Behavioral;这样就可以了,下边是我仿真的图串并转换,是通过什么原理实现的啊?比如把并行数据转换成串行数据:将四个码元周期均为4s的并行数字信号进行并—串转换,转换后,在一个周期(4s)内,将有4个码元被串行。

#二进制代码#vhdl语言#vhdl#vector

随机阅读

qrcode
访问手机版