forked from libre-chip/cpu
		
	add write port
This commit is contained in:
		
							parent
							
								
									1ead550d13
								
							
						
					
					
						commit
						35ea85d074
					
				
					 2 changed files with 30 additions and 0 deletions
				
			
		|  | @ -29,6 +29,11 @@ pub fn main_memory(config: &CpuConfig) { | |||
|     let read_data: UInt<8> = m.output(); | ||||
|     #[hdl] | ||||
|     let en: Bool = m.input(); | ||||
|     // add write support
 | ||||
|     #[hdl] | ||||
|     let write_en: Bool = m.input(); | ||||
|     #[hdl] | ||||
|     let write_data: UInt<8> = m.input(); | ||||
|     
 | ||||
| 	#[hdl] | ||||
|     let cd: ClockDomain = m.input(); | ||||
|  | @ -48,6 +53,15 @@ pub fn main_memory(config: &CpuConfig) { | |||
|     connect(read_port.clk, cd.clk); | ||||
|     connect(read_data,read_port.data); | ||||
|     
 | ||||
|     let write_port = my_memory.new_write_port(); | ||||
|     connect_any(write_port.addr, addr); | ||||
|     connect_any(write_port.en, addr.cmp_lt(4u64) & write_en); | ||||
|     connect_any(write_port.data, write_data); | ||||
|     connect(write_port.clk, cd.clk); | ||||
|     //connect_any(write_port.mask, 0xFFu8); //try that one
 | ||||
|     connect_any(write_port.mask, true); | ||||
|     
 | ||||
|     
 | ||||
| 
 | ||||
|     
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -41,6 +41,8 @@ fn test_main_memory() { | |||
|     sim.write(sim.io().en, true); | ||||
|     sim.write(sim.io().cd.rst, false); | ||||
|     sim.write(sim.io().cd.clk, false); | ||||
|     sim.write(sim.io().write_en, false); | ||||
|     sim.write(sim.io().write_data, 0xFFu8); | ||||
| 
 | ||||
|     // TODO convert to for loop
 | ||||
|     // you need to write an initial value to all inputs before you can start running the simulation
 | ||||
|  | @ -57,6 +59,20 @@ fn test_main_memory() { | |||
| 		sim.advance_time(SimDuration::from_micros(1)); | ||||
|     } | ||||
|     
 | ||||
|     sim.write(sim.io().write_en, true); | ||||
|     sim.write(sim.io().addr, 0u64); | ||||
|     sim.write(sim.io().write_data, 0x11u8); | ||||
| 	sim.advance_time(SimDuration::from_micros(1)); | ||||
| 	sim.write(sim.io().addr, 1u64); | ||||
|     sim.write(sim.io().write_data, 0x22u8); | ||||
| 	sim.advance_time(SimDuration::from_micros(1)); | ||||
| 	sim.write(sim.io().addr, 2u64); | ||||
|     sim.write(sim.io().write_data, 0x33u8); | ||||
| 	sim.advance_time(SimDuration::from_micros(1)); | ||||
| 	sim.write(sim.io().addr, 3u64); | ||||
|     sim.write(sim.io().write_data, 0x44u8); | ||||
| 	sim.advance_time(SimDuration::from_micros(1)); | ||||
|     
 | ||||
|     
 | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue