User Tag List

Показано с 1 по 10 из 202

Тема: SQRUM 1M

Древовидный режим

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

    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    594
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от omercury Посмотреть сообщение
    UPD
    Почитайте про конкатенацию.
    Спасибо, переделал мультиплексор :-D
    Код:
    module ZX_mux(
    	input wire [4:0] H,		// horizontal counter
    	input wire [7:0] V,		// vertical counter
    	input wire [19:14] RAM,	// Muxed Extended RAM address
    	input wire [15:0] A,	// Z80 adderss
    	input wire S0,			// RAS
    	input wire DC1,			// H1
    	input wire DC2,			// H2
    	input wire SCR,			// Second SCREEN (128k)
    	output wire [9:0] MA
    );
    
    assign MA = DC1 ? (
    				S0 ?	{2'b00,SCR,1'b0,DC2 ? 3'b110 : {V[7],V[6],V[2]} /*attr/pix*/, 3'b011} :
    						{DC2 ? V[7:6] : V[1:0] /*attr/pix*/, V[5:3], H[4:0]}
    			) : (
    				S0 ? 	{RAM[19], RAM[17], RAM[15], A[13:10], RAM[18], RAM[16], RAM[14]} :
    						A[9:0]
    			);
    endmodule
    UPD: подозреваю, что это некорректно, т.к. в счетчике изменение этих сигналов происходит по спаду пиксельклока и соответственно менять адреса нужно так же по спаду тактового генератора!
    Т.е. так
    Код:
    module ZX_mux(
    	input wire [4:0] H,		// horizontal counter
    	input wire [7:0] V,		// vertical counter
    	input wire [19:14] RAM,	// Muxed Extended RAM address
    	input wire [15:0] A,	// Z80 adderss
    	input wire S0,			// RAS
    	input wire DC1,			// H1
    	input wire DC2,			// H2
    	input wire SCR,			// Second SCREEN (128k)
    	input wire CLK,			// 14MHZ
    	output reg [9:0] MA
    );
    
    always @(negedge CLK)
    	MA <= DC1 ? (
    		S0 ?	{2'h0,SCR,1'h0,DC2 ? 3'h6 : {V[7],V[6],V[2]} /*attr/pix*/, 3'h3} :
    				{DC2 ? V[7:6] : V[1:0] /*attr/pix*/, V[5:3], H[4:0]}
    	) : (
    		S0 ? 	{RAM[19], RAM[17], RAM[15], A[13:10], RAM[18], RAM[16], RAM[14]} :
    				A[9:0]
    	);
    
    endmodule
    UPD: Ну что ж, можете меня почти поздравить!!!!!

    Матрас без ПЗУ, бежит немного ввеох
    Атрибуты те что надо! Экран почти как надо, видимо я где-то попутал или в мультиплексоре или в рас/кас...

    UPD1: убедился, что это не мультиплексор
    UPD2: скорее всего проблема в рассинхронизация выборки байтов аттрибутов/пикселей....
    UPD3: оказалось схемный ввод обработчика портов сильно тормозил схему! теперь как-то по-другому всё работает как переписал на Verilog.
    UPD4: фигня, походу это всё считывалось с ШД проца, т.к. я перепутал спады/подъемы сигналов ))))
    Последний раз редактировалось EvgenRU; 10.08.2017 в 22:13.

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

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

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

Ваши права

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