VHDL中,downto与to有什么区别啊

bluesky140 2009-03-11 03:17:10
variable a,b:std_logic_vector(7 downto 0);
a(0 to 5):=b(2 to 7);


在上面两句话中,downto 与to 在使用中有什么区别呢?

a(0 to 5):=b(7 downto 2);中,a(0)到底等于b(2)还是b(7)啊?


a(0 to 5):="010101" a(0)是等于0还是等于1?

a(5 to 0)或者a(2 downto 6) 这种描述方式对吗?

谢谢
...全文
6691 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Li Kang 2011-09-13
  • 打赏
  • 举报
回复
谢谢楼主
ebaozi 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 skye_ld 的回复:]
所以总结成一句话,声明的时候无差别,赋值的时候要注意~~
[/Quote]
精辟……路过学习
我觉得声明的时候还是从高到低吧,符合平时习惯。
skye_ld 2009-03-15
  • 打赏
  • 举报
回复
a(0)=b(7)
To是由低到高 Downto是有高到低
具体赋值没有区别 但是前后设置要一致 要to就都to 要不就都Downto
To和downto之间的赋值会高地位颠倒

所以总结成一句话,声明的时候无差别,赋值的时候要注意~~
bluesky140 2009-03-12
  • 打赏
  • 举报
回复
谢谢,大致明白了
aaronstone 2009-03-12
  • 打赏
  • 举报
回复
downto 从高位到低位
to 从低位到高位

语法上没有错误
不过我不这么用
benjaminweber 2009-03-11
  • 打赏
  • 举报
回复
to 是从小到大
downto 是从大到小
a(0 to 5) := b(7 downto 2)中, a(0)=b(7)
我不认为将a声明为7 downto 0之后用0 to 5的方式使用是正确的,至少是不合适的。
声明为 to 就该用 to, 声明为 downto, 就该用 downto 比较好
vhdl设计FPGA读写DS18B20温度传感器quartus工程源码+文档说明 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity ds18B20 is port( clk : in std_logic;---50MHz rst_n: in std_logic; --复位信号输入 one_wire : inout std_logic; --DS18B20数据线 ---------------- dataout : out std_logic_vector(7 downto 0); --数码管数据输出 en : out std_logic_vector(3 downto 0)); --数码管位选信号 end ds18B20; architecture Behavioral of ds18B20 is signal dataout_buf:std_logic_vector(3 downto 0); signal count:std_logic_vector(17 downto 0); --分频计数器 signal cnt_scan:std_logic_vector(17 downto 0); --数码管的扫描显示计数器 signal clk_1us:std_logic;-- 1MHz 时钟 signal cnt_1us:integer range 0 to 750002;-- 1us延时计数子 signal cnt_1us_clear:std_logic;-- 请1us延时计数子 TYPE STATE_TYPE is (S00,S0,S1,S2,S3,S4,S5,S6,S7, WRITE0,WRITE1,WRITE00,WRITE01,READ0,READ1,READ2,READ3); --状态机 signal state: STATE_TYPE; --初始状态设置为复位状态 signal one_wire_buf:std_logic;-- One-Wire总线 缓存寄存器 signal temperature_buf:std_logic_vector(15 downto 0);-- 采集到的温度值缓存器(未处理) signal DS18B20_DATA_buf:std_logic_vector(15 downto 0);-- 采集到的温度值缓存器(未处理) signal DS18B20_DATA_buf_temp:std_logic_vector(15 downto 0);-- 采集到的温度值缓存器(未处理) signal step:integer range 0 to 50;--子状态寄存器 0~50 signal bit_valid:integer range 0 to 15;--有效位 signal one_wire_in:std_logic; signal t_buf:std_logic_vector(15 downto 0); signal t_buf_temp:std_logic_vector(15 downto 0); signal cnt:integer range 0 to 50;-- 计数子 -- //++++++++++++++++++++++++++++++++++++++ -- // 分频器50MHz->1MHz 开始 -- //++++++++++++++++++++++++++++++++++++++ begin -- process (clk,rst_n) -- begin -- if rising_edge(clk) then -- if(rst_n='0') then -- cnt <= 0; -- else -- if(cnt = 49)then -- cnt <= 0; -- else -- cnt <= cnt + 1; -- end if; -- end if; -- end if; -- end Process;

6,127

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 硬件设计
社区管理员
  • 硬件设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧