📄 w429.vhd
字号:
data_reg21(15 downto 0) <= data_in;
end if;
if addr = "00101011" then
data_reg21(31 downto 16) <= data_in;
end if;
if addr = "00101100" then
data_reg22(15 downto 0) <= data_in;
end if;
if addr = "00101101" then
data_reg22(31 downto 16) <= data_in;
end if;
if addr = "00101110" then
data_reg23(15 downto 0) <= data_in;
end if;
if addr = "00101111" then
data_reg23(31 downto 16) <= data_in;
end if;
if addr = "00110000" then
data_reg24(15 downto 0) <= data_in;
end if;
if addr = "00110001" then
data_reg24(31 downto 16) <= data_in;
end if;
if addr = "00110010" then
data_reg25(15 downto 0) <= data_in;
end if;
if addr = "00110011" then
data_reg25(31 downto 16) <= data_in;
end if;
if addr = "00110100" then
data_reg26(15 downto 0) <= data_in;
end if;
if addr = "00110101" then
data_reg26(31 downto 16) <= data_in;
end if;
if addr = "00110110" then
data_reg27(15 downto 0) <= data_in;
end if;
if addr = "00110111" then
data_reg27(31 downto 16) <= data_in;
end if;
if addr = "00111000" then
data_reg28(15 downto 0) <= data_in;
end if;
if addr = "00111001" then
data_reg28(31 downto 16) <= data_in;
end if;
if addr = "00111010" then
data_reg29(15 downto 0) <= data_in;
end if;
if addr = "00111011" then
data_reg29(31 downto 16) <= data_in;
end if;
if addr = "00111100" then
data_reg30(15 downto 0) <= data_in;
end if;
if addr = "00111101" then
data_reg30(31 downto 16) <= data_in;
end if;
if addr = "00111110" then
data_reg31(15 downto 0) <= data_in;
end if;
if addr = "00111111" then
data_reg31(31 downto 16) <= data_in;
end if;
if addr = "01000000" then
data_reg32(15 downto 0) <= data_in;
end if;
if addr = "01000001" then
data_reg32(31 downto 16) <= data_in;
end if;
end if;
else--reset='1'复位有效,寄存器全部清零
data_reg0 <= "00000000000000000000000000000000";
data_reg1 <= "00000000000000000000000000000000";
data_reg2 <= "00000000000000000000000000000000";
data_reg3 <= "00000000000000000000000000000000";
data_reg4 <= "00000000000000000000000000000000";
data_reg5 <= "00000000000000000000000000000000";
data_reg6 <= "00000000000000000000000000000000";
data_reg7 <= "00000000000000000000000000000000";
data_reg8 <= "00000000000000000000000000000000";
data_reg9 <= "00000000000000000000000000000000";
data_reg10 <= "00000000000000000000000000000000";
data_reg11 <= "00000000000000000000000000000000";
data_reg12 <= "00000000000000000000000000000000";
data_reg13 <= "00000000000000000000000000000000";
data_reg14 <= "00000000000000000000000000000000";
data_reg15 <= "00000000000000000000000000000000";
data_reg16 <= "00000000000000000000000000000000";
data_reg17 <= "00000000000000000000000000000000";
data_reg18 <= "00000000000000000000000000000000";
data_reg19 <= "00000000000000000000000000000000";
data_reg20 <= "00000000000000000000000000000000";
data_reg21 <= "00000000000000000000000000000000";
data_reg22 <= "00000000000000000000000000000000";
data_reg23 <= "00000000000000000000000000000000";
data_reg24 <= "00000000000000000000000000000000";
data_reg25 <= "00000000000000000000000000000000";
data_reg26 <= "00000000000000000000000000000000";
data_reg27 <= "00000000000000000000000000000000";
data_reg28 <= "00000000000000000000000000000000";
data_reg29 <= "00000000000000000000000000000000";
data_reg30 <= "00000000000000000000000000000000";
data_reg31 <= "00000000000000000000000000000000";
data_reg32 <= "00000000000000000000000000000000";
end if;
else--cs='0',片选无效,全部清零
data_reg0 <= "00000000000000000000000000000000";
data_reg1 <= "00000000000000000000000000000000";
data_reg2 <= "00000000000000000000000000000000";
data_reg3 <= "00000000000000000000000000000000";
data_reg4 <= "00000000000000000000000000000000";
data_reg5 <= "00000000000000000000000000000000";
data_reg6 <= "00000000000000000000000000000000";
data_reg7 <= "00000000000000000000000000000000";
data_reg8 <= "00000000000000000000000000000000";
data_reg9 <= "00000000000000000000000000000000";
data_reg10 <= "00000000000000000000000000000000";
data_reg11 <= "00000000000000000000000000000000";
data_reg12 <= "00000000000000000000000000000000";
data_reg13 <= "00000000000000000000000000000000";
data_reg14 <= "00000000000000000000000000000000";
data_reg15 <= "00000000000000000000000000000000";
data_reg16 <= "00000000000000000000000000000000";
data_reg17 <= "00000000000000000000000000000000";
data_reg18 <= "00000000000000000000000000000000";
data_reg19 <= "00000000000000000000000000000000";
data_reg20 <= "00000000000000000000000000000000";
data_reg21 <= "00000000000000000000000000000000";
data_reg22 <= "00000000000000000000000000000000";
data_reg23 <= "00000000000000000000000000000000";
data_reg24 <= "00000000000000000000000000000000";
data_reg25 <= "00000000000000000000000000000000";
data_reg26 <= "00000000000000000000000000000000";
data_reg27 <= "00000000000000000000000000000000";
data_reg28 <= "00000000000000000000000000000000";
data_reg29 <= "00000000000000000000000000000000";
data_reg30 <= "00000000000000000000000000000000";
data_reg31 <= "00000000000000000000000000000000";
data_reg32 <= "00000000000000000000000000000000";
end if;
end process;
data_count1_ref <= JIA(data_reg0,"00000000000000000000000001000111");--32组数据的分界点
data_count2_ref <= JIA(data_count1_ref,data_count1_ref);
data_count3_ref <= JIA(data_count2_ref,data_count1_ref);
data_count4_ref <= JIA(data_count3_ref,data_count1_ref);
data_count5_ref <= JIA(data_count4_ref,data_count1_ref);
data_count6_ref <= JIA(data_count5_ref,data_count1_ref);
data_count7_ref <= JIA(data_count6_ref,data_count1_ref);
data_count8_ref <= JIA(data_count7_ref,data_count1_ref);
data_count9_ref <= JIA(data_count8_ref,data_count1_ref);
data_count10_ref <= JIA(data_count9_ref,data_count1_ref);
data_count20_ref <= JIA(data_count10_ref,data_count10_ref);
data_count30_ref <= JIA(data_count20_ref,data_count10_ref);
process(cs,clk,start,reset,repeat)
begin
if (cs = '1') then--片选
if (reset = '0') then--复位
if (start = '1') then--开始发送数据
if (repeat = '1') then--循环发送第一组数据
data_count2 <= "00000000000000000000000000000000";
data_count3 <= "00000000000000000000000000000000";
half_out <= '0';
if rising_edge(clk) then--clk的上升沿触发循环计数
if data_count1 = data_count1_ref then
data_count1<="00000000000000000000000000000000";
else
data_count1<=data_count1+1;
end if;
end if;
else--单次发送32组数据
data_count1<="00000000000000000000000000000000";
if rising_edge(clk) then--clk的上升沿触发32组单次循环计数
if (data_count3 = data_count1_ref) then
data_count3 <= "00000000000000000000000000000000";
else
data_count3 <= data_count3+1;
end if;
if data_count2 = (JIA(data_count20_ref,data_count10_ref)) then
--计到第32组大小时保持住不清零循环计数
data_count2 <= (JIA(data_count20_ref,data_count10_ref));
else
data_count2 <= data_count2+1;
if (data_count2 = "00000000000000000000000000000000") then
datafifo2 <= data_reg1;--把第一组数据送到FIFO中
half_out <= '0';--输出一半数据标识清零
end if;
if (data_count2 = data_count1_ref) then
datafifo2 <= data_reg2;--把第二组数据送到FIFO中
end if;
if (data_count2 = data_count2_ref) then
datafifo2 <= data_reg3;
end if;
if (data_count2 = data_count3_ref) then
datafifo2 <= data_reg4;
end if;
if (data_count2 = data_count4_ref) then
datafifo2 <= data_reg5;
end if;
if (data_count2 = data_count5_ref) then
datafifo2 <= data_reg6;
end if;
if (data_count2 = data_count6_ref) then
datafifo2 <= data_reg7;
end if;
if (data_count2 = data_count7_ref) then
datafifo2 <= data_reg8;
end if;
if (data_count2 = data_count8_ref) then
datafifo2 <= data_reg9;
end if;
if (data_count2 = data_count9_ref) then
datafifo2 <= data_reg10;
end if;
if (data_count2 = data_count10_ref) then
datafifo2 <= data_reg11;
end if;
if (data_count2 = JIA(data_count10_ref,data_count1_ref)) then
datafifo2 <= data_reg12;
end if;
if (data_count2 = JIA(data_count10_ref,data_count2_ref)) then
datafifo2 <= data_reg13;
end if;
if (data_count2 = JIA(data_count10_ref,data_count3_ref)) then
datafifo2 <= data_reg14;
end if;
if (data_count2 = JIA(data_count10_ref,data_count4_ref)) then
datafifo2 <= data_reg15;
end if;
if (data_count2 = JIA(data_count10_ref,data_count5_ref)) then
datafifo2 <= data_reg16;
half_out <= '1';--输出一半数据置1
end if;
if (data_count2 = JIA(data_count10_ref,data_count6_ref)) then
datafifo2 <= data_reg17;
end if;
if (data_count2 = JIA(data_count10_ref,data_count7_ref)) then
datafifo2 <= data_reg18;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -