User Tag List

Страница 12 из 23 ПерваяПервая ... 8910111213141516 ... ПоследняяПоследняя
Показано с 111 по 120 из 287

Тема: Орион-128: Перспективы развития

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    02.01.2007
    Адрес
    Волгоград, Россия
    Сообщений
    1,454
    Спасибо Благодарностей отдано 
    195
    Спасибо Благодарностей получено 
    161
    Поблагодарили
    99 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ewgeny7 Посмотреть сообщение
    AlexBel, ткни пжалуста носом в HDL-SPI какойнить попроще для фкуривания
    Я тут сидел свой код изобретал, теперь хочу на творения мастеров поглядеть.
    Не совсем понял, кто из нас нужен, но на всякий случай...
    Посмотри проект Алекса Фрида: http://alexfreed.com/FPGApple/DE1_src/
    Если мне не изменяет память, у него там реализован не только аппаратный SPI, но и есть аппаратное чтение (а, может, и запись) секторов на SD.
    Последний раз редактировалось AlexBel; 15.10.2009 в 21:36.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    02.01.2007
    Адрес
    Волгоград, Россия
    Сообщений
    1,454
    Спасибо Благодарностей отдано 
    195
    Спасибо Благодарностей получено 
    161
    Поблагодарили
    99 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    AlexBel off Igor_t on
    Цитата Сообщение от ewgeny7 Посмотреть сообщение
    AlexBel, ткни пжалуста носом в HDL-SPI какойнить попроще для фкуривания
    только это Игорь ))))
    нечто мудренное , если склероз неизменяет то это готовый модуль для работы с флешой типа 25хх
    Код:
    module spi
    (
    input				clk,
    
    input				start,
    input				wr,
    input				wr_en,
    output	reg			done,
    
    input		[7:0]	spi_command,
    input		[15:0]	spi_addres,
    output	reg	[7:0]	spi_data_out,
    input		[7:0]	spi_data_in,
    
    output	reg			spi_clk,
    output	reg			spi_cs,
    output	reg			spi_di,
    input				spi_do
    
    );
    
    initial	done			=	0;
    initial	spi_data_out	=	8'h00;
    initial	spi_clk			=	0;
    initial	spi_cs			=	0;
    initial	spi_di			=	0;
    
    reg			wr_en_reg;
    reg			wr_reg;
    reg	[7:0]	spi_command_reg;
    reg	[15:0]	spi_addres_reg;
    reg	[7:0]	spi_data_in_reg;
    
    reg	[3:0]	divider;
    reg [1:0]	mode;
    reg [3:0]	count_addr;
    reg [2:0]	count_data;
    reg	[1:0]	delay_done;
    
    always@ (posedge clk)
    begin
    if (start == 1'b1) 
    	begin
    		if (divider < 4'd12 ) 	
    			begin
    				divider <= divider + 1'b1;
    				if (divider == 4'd6) 	
    					begin 
    						if (spi_clk == 1'b1)
    							begin
    								if (mode == 2'd0)
    									begin
    										count_data <= count_data + 1'b1;
    										if(count_data == 3'd7)										
    											begin
    												if (wr_en_reg == 0)
    													begin
    														mode <= mode + 1'b1;
    													end
    												else
    													begin
    														mode <=  2'd3;
    													end
    											end
    									end
    								if (mode == 2'd1)	
    									begin
    										count_addr <= count_addr + 1'b1;
    										if(count_addr == 4'd15)
    											begin
    												mode <= mode + 1'b1;
    											end
    									end
    								if (mode == 2'd2)
    									begin
    										count_data <= count_data + 1'b1;
    										if(count_data == 3'd7)	
    											begin
    												mode <= mode + 1'b1;
    											end
    										if (wr_reg == 1'b0)
    											begin
    												if (spi_clk == 1'b1) 
    													begin
    														spi_data_out[~count_data] <= spi_do;
    													end
    											end
    									end
    							end	
    						else
    							begin
    								if (mode == 2'd3) 
    									begin
    										spi_cs <= 1'b1;
    										spi_di <= 1'b0;
    										delay_done <=  delay_done + 1'b1;
    									end
    								if(delay_done == 2'b11)	done	<= 1'b1;
    							end
    					end
    			end
    		else
    			begin
    				divider <= 4'd0;
    				if (spi_cs == 1'b0)
    					begin
    						spi_clk <= ~spi_clk;
    					end
    			end
    		if (mode == 2'd0)
    			begin
    				spi_di <= spi_command_reg[~count_data];
    				spi_cs <= 0;
    			end
    		if (mode == 2'd1)
    			begin
    				spi_di <= spi_addres_reg[~count_addr];
    			end	
    		if (mode == 2'd2)
    			begin
    				if (wr_reg == 1'b1)
    					begin
    						spi_di	<= spi_data_in_reg[~count_data];
    					end
    				else
    					begin
    						spi_di <= 1'b0;
    					end
    			end
    	end
    else
    	begin
    	wr_en_reg		<=	wr_en;
    	divider			<=	4'd0;	
    	count_addr		<=	4'd0;
    	count_data		<=	3'd0;
    	mode			<=	2'd0;
    	wr_reg			<=	wr;
    	delay_done		<=	2'b00;
    	done			<=	1'b0;	
    	spi_command_reg	<=	spi_command;
    	spi_addres_reg	<=	spi_addres;
    	spi_data_in_reg	<=	spi_data_in;
    	spi_cs			<=	1'b1;
    	spi_clk			<=	1'b0;
    	spi_di			<=	1'b0;
    	end
    end
    
    endmodule
    блин а тег code тут работает ?????

    Igor_t off

  4. #3

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AlexBel Посмотреть сообщение
    реализовать SPI для реала не так уж сложно как кажется на первый взгляд (это можно сделать на какой нибуть совсем уж мелкой плисине или например на 5вольтовом флексе коих мне подкинул свофски и которыми я готов поделится в случае надобности
    Это не проблема. У меня валяются мелкие EPM3032 - 7064, могу зашить их и разослать желающим в почтовом конвертике.

    ---------- Post added at 21:27 ---------- Previous post was at 21:22 ----------

    Цитата Сообщение от AlexBel Посмотреть сообщение
    только это Игорь ))))
    Да, я понял
    Блин, кнопочка "спасибо" опять пропала
    Я правильно понял, что SD работает на SPI 0?
    И в чем принципиальная разница между SPI и I2C? Кода на I2C у тебя рядом не валяется?
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  5. #4

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

  6. #5

    Регистрация
    02.01.2007
    Адрес
    Волгоград, Россия
    Сообщений
    1,454
    Спасибо Благодарностей отдано 
    195
    Спасибо Благодарностей получено 
    161
    Поблагодарили
    99 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    AlexBel off Igor_t on
    Цитата Сообщение от ewgeny7 Посмотреть сообщение
    в чем принципиальная разница между SPI и I2C? Кода на I2C у тебя рядом не валяется?
    говоря простым языком SPI представляет из себя выпихнутые из сдвигового регистра 8 бит данных стробируемые клоком + CS для разрешения работы , и2ц же это всего 2 линии SDA и SCL обмен по ней состоит из условий типа старт стоп рестарт .... они различаются тем что в какое время относительно друг друга находятся уровни сигналов ..... фу мерзко и тормознуто , да и достоинств я невижу для применения этой шины тут

    кстати , вот так я применял самописный драйвер SPI для прогрузки данных с флехи в срам
    Код:
    		load_font:		begin
    								begin
    									case(load_font_state)
    									
    										read_rom_even	:	begin
    																eeprom_start	<=	1'b1;
    																load_font_state	<=	wait_rd_even;
    																
    															end
    													
    										wait_rd_even	:	begin
    																if(eeprom_done == 1'b1)
    																	begin
    																		eeprom_start			<=	1'b0;
    																		ram_font_data_wr[7:0]	<=	eeprom_data_in[7:0];
    																		eeprom_adr				<=	eeprom_adr	+	1'b1;
    																		load_font_state			<=	read_rom_odd;
    																	end 
    																
    															end
    													
    										read_rom_odd	:	begin
    																if(eeprom_done == 0)
    																	begin
    																		load_font_state	<=	wait_rd_odd;
    																		eeprom_start	<=	1;
    																	end
    																	
    															end
    															
    										wait_rd_odd		:	begin
    																if(eeprom_done == 1)
    																	begin
    																		eeprom_start			<=	0;
    																		ram_font_data_wr[15:8]	<=	eeprom_data_in[7:0];
    																		eeprom_adr				<=	eeprom_adr	+	1'b1;
    																		load_font_state			<=	write_font_ram;
    																	end 
    																	
    															end
    															
    										write_font_ram	:	begin	
    																if(eeprom_done == 0)
    																	begin
    																		if (ram_wr_done == 0)
    																			begin
    																				font_wr_start	<=	1;
    																				load_font_state	<=	wait_wr_done;
    																			end
    																	end
    																	
    															end
    															
    										wait_wr_done	:	begin
    																if (ram_wr_done)
    																	begin
    																		font_wr_start	<=	0;
    																		if (eeprom_adr < size_font_dump)
    																			begin															
    																				load_font_state	<=	read_rom_even;
    																				ram_font_adr	<=	ram_font_adr + 1'b1;
    																			end
    																		else
    																			begin
    																				load_font_state	<=	read_rom_even;
    																				main_state	<=	idle;
    																			end
    																	end
    																	
    															end
    									endcase
    								end
    						end
    
    		idle:			begin

    Igor_t off
    Последний раз редактировалось AlexBel; 15.10.2009 в 22:20.

  7. #6

    Регистрация
    02.01.2007
    Адрес
    Волгоград, Россия
    Сообщений
    1,454
    Спасибо Благодарностей отдано 
    195
    Спасибо Благодарностей получено 
    161
    Поблагодарили
    99 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    AlexBel off Igor_t on


    Цитата Сообщение от pvlad Посмотреть сообщение
    Господа! Я уважаю Ваши сентименты! Это трогательно, но почему Вы тогда рубите магнитофонный ввод программ в Орион? Вы глубоко ошибаетесь, если считаете, что все Орионы были оснащены дисководами, а IDE - вообще были единицы!!!
    Ну рубим хотябы потому что лично у меня нету магнитофона :[ да и кассет я ненайду уже , тем более с софтом ориона. а вот дисковод у меня был

    Цитата Сообщение от pvlad Посмотреть сообщение
    Коллеги! Я еще раз напоминаю, что из этой микрухи грузится только загрузчик! Это десятые доли секунды! О чем Вы говорите? Далее уже загрузчик грузит вашу СР/М с того носителя, который Вы установите. О чем страсти?
    Да дело не в том что оно доли сек , оно в реализации гооораздо геморойней и обьемней по ресурсам плисины , если SPI можно на рассыпухе сотворить чисто принципиально , то и2ц увольте таааакой головняк .
    Цитата Сообщение от pvlad Посмотреть сообщение
    I2C так же "выпихнутые из сдвигового регистра 8 бит данных стробируемые клоком", но без CS. Старт/стоп - это всего лишь задержки относительно друг-друга SDA и SCL. Используется всего 2 линии, а у SPI - четыре! И не сравнить с SPI , сколько вкусностей на шине I2C!
    ну некривите душой 4 провода потому как оно в обе стороны одновременно работает , обмен по и2ц сложней как с логической точки зрения так и с железной , а вот вкусности они есть и на SPI (если не больше) стоит только взглянуть на нее
    Igor_t off

  8. #7

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AlexBel Посмотреть сообщение
    Да дело не в том что оно доли сек , оно в реализации гооораздо геморойней и обьемней по ресурсам плисины , если SPI можно на рассыпухе сотворить чисто принципиально , то и2ц увольте таааакой головняк .
    Пионерский вопрос. Если говорить о сугубо программной реализации (программно побитно выпихивать данные в регистр), в схеме без стробирования (I2C) потребуется настраиваться на длительности импульсов (когда читатьб состояние порта, когда писать туда)?
    Если да, то очень сложно получится - ведь Орион может работать на разных частотах и надо как-то (по прерываниям) замерять текущее быстродействие и на лету корректировать код выпихивания битов. А если у пользователя есть кнопка Турбо (а ее надо бы иметь, хотя бы для того чтобы играть в игрухи на "человеческой" скорости), то это надо делать чем чаще, тем лучше. Накладные расходы, однако.

    ---------- Post added at 09:56 ---------- Previous post was at 09:31 ----------

    Цитата Сообщение от pvlad Посмотреть сообщение
    Но больше чем уверен: если у кого то возникнут "страсти к Ориону", то он скорее повторит новый (паять то собственно нечего!), чем будет изобретать огород с CF для старого. Не усложняйте проблему!
    Ремарка исключительно справдливости ради
    IDE (ATA) позволяет на этой же шине не только CompactFlash работать, но и классическим параллельным HDD (их сейчас массово списывают, за бутылку пива затариться можно на десятилетие вперед), а также ATAPI-устройствам (CD/DVD-ROM), которые аппаратно на той же самой шине работают, только программный код под них посложнее.

    CD/DVD-ROM вообще никак к Ориону по-другому не подключить кроме как к PATA, т.к. SATA на Орионе не будет никогда ИМХО.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  9. #8

    Регистрация
    18.09.2009
    Адрес
    г.Ногинск, МО
    Сообщений
    246
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Пионерский вопрос. ....
    Пионерский ответ! Зачем старому Ориону последовательное ПЗУ? Там есть РОМ-диск и своя устаканившаяся система загрузки! Зачем что-то менять. Есть и свой интерфейс на IDE и все остальное. Ну и пусть работает! Интерфейс SD придется городить свой для старого Ориона, и схемотехнически он может быть (скорее всего) разным. В чем здесь криминал? Не смертельно (но плохо), если даже порты будут разные - прикладные программы не должны обращаться на прямую к SD, а через операционку. Не вижу проблемы, если будет разная версия СР/М для этих компьютеров! ВАЖНО, чтобы одни и те же программы под СР/М работали без проблем на обоих компьютерах!

    Цитата Сообщение от Error404 Посмотреть сообщение
    Ремарка исключительно справдливости ради ...
    Совсем не пойму, крутимся вокруг одного и того же. Новый Орион мы разбили на два блока (во всяком случае я так настаиваю!): основной блок универсального контроллера и дополнительная плата периферии со 100% совместимостью со старым Орионом! Ну, кто же пытается "обидеть" Ориошу? Подозревать в этом его создателя - просто не корректно! Я хочу вас убедить в том, что повторять весь Орион-128 в одном корпусе Альтеры - не перспективно. В таком виде этот проект может всего-лишь потешить самолюбие творца этого проекта. Поэтому система загрузки с последовательным ПЗУ придумана только для этого Орион-контроллера, с тем, чтобы он был универсальным, и устроил всех. Если кому-то это ПЗУ поперек горла, то можно в загрузчике Альтеры добавить проверку о наличии самого ПЗУ на плате (если принципиально не впаяно!). Если его нет грузиться (предать управление) из дополнительной платы, где стоит ПЗУ F800. В этом то и прелесть, что появляется большая универсальность, которую не возможно получить на рассыпухе.
    И последнее. Контроллер должен запускаться на одной и той же тактовой частоте - максимальной. Далее, уже в своем загрузчике/программе Вы можете уменьшить частоту, если это необходимо, до нужного значения. Было бы неплохо, если б Евгений сделал порт для изменения тактовой частоты.
    Если ты чего-то не знаешь, то это не значит, что этого не может быть.

  10. #9

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от pvlad Посмотреть сообщение
    Далее, уже в своем загрузчике/программе Вы можете уменьшить частоту, если это необходимо, до нужного значения. Было бы неплохо, если б Евгений сделал порт для изменения тактовой частоты.
    Как скажете.
    Максимальная частота ядра Т80 на Циклоне вроде как 28Мгц. Реально наверное будет 20-25. Соответственно, память нужна 10-12нс.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  11. #10

    Регистрация
    18.09.2009
    Адрес
    г.Ногинск, МО
    Сообщений
    246
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ewgeny7 Посмотреть сообщение
    Как скажете.
    Максимальная частота ядра Т80 на Циклоне вроде как 28Мгц. Реально наверное будет 20-25. Соответственно, память нужна 10-12нс.
    Отлично! Что мешает применить CY7C1011DV33? Не дорогая, распространенная и гарантировано 10нс.

    Реплику "Как скажете" не понял. Какой знак в конце "?" или "!"?

    И еще. Мы можем добавить пару команд в Z80? Ну, хотя бы через какую нибудь таблицу расширения команд CB, DD и т.д?
    Если ты чего-то не знаешь, то это не значит, что этого не может быть.

Страница 12 из 23 ПерваяПервая ... 8910111213141516 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 48
    Последнее: 03.01.2017, 14:10
  2. Перспективы игростроения.
    от moroz1999 в разделе Игры
    Ответов: 71
    Последнее: 21.09.2015, 14:36

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •