Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
XiangShan
提交
9a5b5207
X
XiangShan
项目概览
OpenXiangShan
/
XiangShan
大约 1 年 前同步成功
通知
1183
Star
3914
Fork
526
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
XiangShan
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9a5b5207
编写于
10月 03, 2019
作者:
Z
Zihao Yu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
test,SimMMIO: remove DeviceHelper
上级
f9e2478f
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
8 addition
and
106 deletion
+8
-106
src/test/csrc/device.cpp
src/test/csrc/device.cpp
+0
-47
src/test/csrc/vga.cpp
src/test/csrc/vga.cpp
+8
-5
src/test/scala/top/SimMMIO.scala
src/test/scala/top/SimMMIO.scala
+0
-29
src/test/vsrc/device.v
src/test/vsrc/device.v
+0
-25
未找到文件。
src/test/csrc/device.cpp
浏览文件 @
9a5b5207
...
...
@@ -3,18 +3,12 @@
#include <SDL2/SDL.h>
void
send_key
(
uint8_t
,
bool
);
uint32_t
read_key
(
void
);
void
init_sdl
(
void
);
void
update_screen
(
void
*
vmem
);
uint32_t
screen_size
(
void
);
void
set_abort
(
void
);
int
uart_getc
(
void
);
void
uart_putc
(
char
c
);
void
init_uart
(
void
);
static
struct
timeval
boot
=
{};
static
uint32_t
vmem
[
800
*
600
];
void
init_device
(
void
)
{
init_sdl
();
...
...
@@ -54,44 +48,3 @@ uint32_t uptime(void) {
return
s
*
1000
+
(
us
+
500
)
/
1000
;
}
extern
"C"
void
put_pixel
(
uint32_t
pixel
)
{
static
int
i
=
0
;
vmem
[
i
++
]
=
pixel
;
if
(
i
>=
800
*
600
)
i
=
0
;
}
extern
"C"
void
vmem_sync
(
void
)
{
update_screen
(
vmem
);
}
extern
"C"
void
device_helper
(
uint8_t
req_wen
,
uint64_t
req_addr
,
uint64_t
req_wdata
,
uint8_t
req_wmask
,
uint64_t
*
resp_rdata
)
{
switch
(
req_addr
)
{
// read uartlite stat register
case
0x40600008
:
*
resp_rdata
=
0x01
;
break
;
// set UARTLITE_RX_VALID
// read uartlite ctrl register
case
0x4060000c
:
*
resp_rdata
=
0
;
break
;
// write uartlite tx fifo
case
0x40600004
:
if
(
req_wen
)
uart_putc
((
char
)
req_wdata
);
break
;
// read uartlite rx fifo
//case 0x40600000: *resp_rdata = uart_getc(); break;
// read RTC
case
0x40700000
:
*
resp_rdata
=
uptime
();
break
;
// read key
case
0x40900000
:
*
resp_rdata
=
read_key
();
break
;
// read screen size
case
0x40800000
:
*
resp_rdata
=
screen_size
();
break
;
// write vga sync
case
0x40800004
:
update_screen
(
vmem
);
break
;
default:
if
(
req_addr
>=
0x40000000
&&
req_addr
<
0x40400000
&&
req_wen
)
{
// write to vmem
vmem
[(
req_addr
-
0x40000000
)
/
sizeof
(
uint64_t
)]
=
req_wdata
;
}
else
{
eprintf
(
"bad address = 0x%08x, wen = %d
\n
"
,
(
uint32_t
)
req_addr
,
req_wen
);
assert
(
0
);
}
}
}
src/test/csrc/vga.cpp
浏览文件 @
9a5b5207
...
...
@@ -7,22 +7,25 @@
#define SCREEN_H 600
#define SCREEN_W 800
static
uint32_t
vmem
[
800
*
600
];
static
SDL_Window
*
window
;
static
SDL_Renderer
*
renderer
;
static
SDL_Texture
*
texture
;
void
update_screen
(
void
*
vmem
)
{
extern
"C"
void
put_pixel
(
uint32_t
pixel
)
{
static
int
i
=
0
;
vmem
[
i
++
]
=
pixel
;
if
(
i
>=
800
*
600
)
i
=
0
;
}
extern
"C"
void
vmem_sync
(
void
)
{
SDL_UpdateTexture
(
texture
,
NULL
,
vmem
,
SCREEN_W
*
sizeof
(
uint32_t
));
SDL_RenderClear
(
renderer
);
SDL_RenderCopy
(
renderer
,
texture
,
NULL
,
NULL
);
SDL_RenderPresent
(
renderer
);
}
uint32_t
screen_size
(
void
)
{
return
((
SCREEN_W
)
<<
16
)
|
(
SCREEN_H
);
}
void
init_sdl
()
{
SDL_Init
(
SDL_INIT_VIDEO
);
SDL_CreateWindowAndRenderer
(
SCREEN_W
,
SCREEN_H
,
0
,
&
window
,
&
renderer
);
...
...
src/test/scala/top/SimMMIO.scala
浏览文件 @
9a5b5207
...
...
@@ -6,19 +6,6 @@ import chisel3.util._
import
bus.simplebus._
import
device._
class
DeviceHelper
extends
BlackBox
{
val
io
=
IO
(
new
Bundle
{
val
clk
=
Input
(
Clock
())
val
reset
=
Input
(
Bool
())
val
reqValid
=
Input
(
Bool
())
val
reqWen
=
Input
(
Bool
())
val
reqAddr
=
Input
(
UInt
(
64.
W
))
val
reqWdata
=
Input
(
UInt
(
64.
W
))
val
reqWmask
=
Input
(
UInt
(
8.
W
))
val
respRdata
=
Output
(
UInt
(
64.
W
))
})
}
class
SimMMIO
extends
Module
{
val
io
=
IO
(
new
Bundle
{
val
rw
=
Flipped
(
new
SimpleBusUC
)
...
...
@@ -45,20 +32,4 @@ class SimMMIO extends Module {
vga
.
io
.
vga
:=
DontCare
io
.
mtip
:=
timer
.
io
.
extra
.
get
.
mtip
//val helper = Module(new DeviceHelper)
//val helperIO = xbar.io.out(0)
//helper.io.clk := clock
//helper.io.reset := reset.asBool
//helper.io.reqValid := helperIO.req.valid
//helper.io.reqWen := helperIO.isWrite()
//helper.io.reqAddr := helperIO.req.bits.addr
//helper.io.reqWdata := helperIO.req.bits.wdata
//helper.io.reqWmask := helperIO.req.bits.wmask
//helperIO.resp.bits.rdata := helper.io.respRdata
//helperIO.resp.bits.cmd := 0.U
//helperIO.resp.bits.user := 0.U
//helperIO.req.ready := true.B
//helperIO.resp.valid := RegNext(helperIO.req.valid)
}
src/test/vsrc/device.v
已删除
100644 → 0
浏览文件 @
f9e2478f
import
"DPI-C"
function
void
device_helper
(
input
bit
req_wen
,
input
longint
req_addr
,
input
longint
req_wdata
,
input
byte
req_wmask
,
output
longint
resp_rdata
);
module
DeviceHelper
(
input
clk
,
input
reset
,
input
reqValid
,
input
reqWen
,
input
[
63
:
0
]
reqAddr
,
input
[
63
:
0
]
reqWdata
,
input
[
7
:
0
]
reqWmask
,
output
[
63
:
0
]
respRdata
);
always
@
(
posedge
clk
)
begin
if
(
reqValid
&&
!
reset
)
device_helper
(
reqWen
,
reqAddr
,
reqWdata
,
reqWmask
,
respRdata
);
end
endmodule
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录