⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 root_a.vhd

📁 USBHostSlave is a USB 1.1 host and Device IP core. – Supports full speed (12Mbps) and low speed (1.
💻 VHD
字号:
library ieee;use ieee.std_logic_1164.all;library work;use work.usbpkg.all;library std;use std.textio.all;architecture a of root is  signal timer :boolean;  signal wakeup :boolean;  type boolvec is array (natural range <>) of boolean;  procedure clrdata (variable s: inout string) is  begin    for i in s'range loop      s(i) := NUL;    end loop;  end clrdata;begin process (timer,dport)    begin      wakeup <= not wakeup;          end process;  process    variable id: natural := 0;    variable ll  : line;    variable endpts: boolvec(0 to MAXENDPT-1);    variable j :integer := 0;    variable local_data:string(1 to 80);    begin      -- let things stabilize      wait for 10 ns;      for i in 1 to 31 loop	-- look for end points	-- send an 'OUT' packet	dport.id <= POUT;	dport.dest <= i;	clrdata(local_data);	dport.data <= local_data;	wait for PTIME ;	dport.id <= NONE;	dport.dest <= i;	wait for RTIME;	timer <= not (timer) after 2*PTIME;  -- timer signal	wait on wakeup;	if (dport.id /= PACK) then	  next;	end if;	write(ll,string'("Found Endpoint "));	write(ll,i);	write(ll,string'(", data is "));	write(ll,dport.data);	writeline(OUTPUT,ll);	local_data := dport.data;	endpts(i) := TRUE;	-- wait until line is released	wait on dport;	-- now modify packet	-- find end of string	j := 1;	while (local_data(j) /= NUL) loop	  j := j + 1;	end loop;	j := j+1;	local_data(j to j+4) := "FOUND";	dport.data <= local_data;	write(ll,string'("Modifying Endpoint"));	writeline(OUTPUT,ll);	dport.id <= PIN;	dport.dest <= i;	wait for PTIME ;	dport.id <= NONE;	dport.dest <= i;	wait for RTIME;	timer <= not (timer) after 2*PTIME;  -- timer signal	wait on wakeup;	if (dport.id /= PACK) then	  write(ll,string'("Endpoint did not respond to PIN packet!!! Modify failed!"));	  writeline(OUTPUT,ll);	  next;	end if;	-- wait until line is released	wait on dport;	-- read data again	dport.id <= POUT;	dport.dest <= i;	clrdata(local_data);	dport.data <= local_data;	wait for PTIME ;	dport.id <= NONE;	dport.dest <= i;	wait for RTIME;	timer <= not (timer) after 2*PTIME;  -- timer signal	wait on wakeup;	if (dport.id /= PACK) then	  write(ll,string'("Endpoint did not respond to second POUT packet!!! Modify failed!"));	  writeline(OUTPUT,ll);	  next;	end if;	write(ll,string'("Modified Endpoint data: "));	write(ll,dport.data);	writeline(OUTPUT,ll);	-- wait until line is released	wait on dport;      end loop;      write(ll,string'("Finished Scan for Endpoints "));      writeline(OUTPUT,ll);      wait;    end process;end a;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -