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

📄 带ram和控制处理器的数字延时单元.vhd

📁 含有各类寄存器
💻 VHD
字号:
--Top-level Digital Delay Unit including RAM and control process--VHDL model of a ram-based analogue delay system.USE WORK.rampac.ALL;USE WORK.adcpac.ALL;ENTITY digdel2 ISPORT(clear : IN BIT; --clears address counteroffset : IN addr10; --delay controlsigin : IN analogue; --signal inputsigout : INOUT analogue); --signal outputEND digdel2;ARCHITECTURE block_struct OF digdel2 ISCOMPONENT adc16PORT(vin : IN analogue; digout : OUT data16;sc : IN BIT; busy : OUT BIT);END COMPONENT;COMPONENT dac16PORT(vout : INOUT analogue; digin : IN data16;en : IN BIT);END COMPONENT;SIGNAL address : addr10; --pointer to ram locationSIGNAL ram_data_out : data16; --data output of ramSIGNAL ram_data_in : data16; --data input to ramSIGNAL clock,cs,write,suboff,adcsc,dacen,adcbusy : BIT; --internal controlsBEGIN--start conversion on positive edge of 'clock'at beginning of cycleadcsc <= NOT clock; --|__________----------|adc1 : adc16 PORT MAP (sigin,ram_data_in,adcsc,adcbusy);cs <= '1'; --enable ram deviceram:BLOCK -- 16-bit * 1024 location RAMBEGINram_proc:PROCESS(cs,write,address,ram_data_in)VARIABLE ram_data : ram_array;VARIABLE ram_init : BOOLEAN := FALSE;BEGINIF NOT(ram_init) THEN --initialise ram locationsFOR i IN ram_data'RANGE LOOPram_data(i) := 0;END LOOP;ram_init := TRUE;END IF;IF cs = '1' THENIF write = '1' THENram_data(address) := ram_data_in;END IF;ram_data_out <= ram_data(address);ELSEram_data_out <= z_val;END IF;END PROCESS;END BLOCK ram;dac1 : dac16 PORT MAP (sigout,ram_data_out,dacen);-- concurrent statement for 'suboff' (subtract offset) signal for countersuboff <= clock; --|----------__________|cntr10:BLOCK --10-bit address counter with offset controlSIGNAL count : addr10 := 0;BEGIN --dataflow model of address countercount <= 0 WHEN clear = '1' ELSE((count + 1) MOD 1024) WHEN (clock'EVENT AND clock = '1')ELSE count;address <= count WHEN suboff = '0'ELSE (count - offset) WHEN ((count - offset) >= 0)ELSE (1024 - ABS(count - offset));END BLOCK cntr10;control_waves:PROCESS --process to generate system control waveformsBEGINclock <= TRANSPORT '1';clock <= TRANSPORT '0' AFTER 10 us; --|----------__________|dacen <= TRANSPORT '1','0' AFTER 5 us; --|-----_______________|write <= TRANSPORT '1' AFTER 13 us, --|_____________----___|'0' AFTER 17 us;WAIT FOR 20 us;END PROCESS control_waves;END block_struct;

⌨️ 快捷键说明

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